Автор: Batalex
Перенос скрипта на API из 1.2 в 2.0 - Thu Jul 05 2018 03:46 PM
Просьба подсказать как правильно перенести скрипт на коде в версию 2.0?
Как узнать какие классы устаревшие и не пашут в 2.0?
Есть какое то детальное руководство по совместимости?
Это не помогло, у меня скрипт а не индикатор.
http://support.tslab.ru/index.php?/Knowl...12-v-versiyu-20Год скрипт не трогал, позабыл немного всю эту кухню. Как мне в VS 2010 увидеть что классы не подходят к 2.0?
Автор: ViL
Re: Перенос скрипта на API из 1.2 в 2.0 - Thu Jul 05 2018 04:22 PM
По факту разница между инструкцией для индикатора и для скрипта не сильно отличается.
http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7811#Post7811Кухня простая.
Подцепить TSLab в проект студии.
В TSLab запустить дебаггер, в настройках программы.
в оптимизации скриптов флаг "Отладка скриптов"
Автор: Batalex
Re: Перенос скрипта на API из 1.2 в 2.0 - Thu Jul 05 2018 05:32 PM
Ну в проекте студии подцепить новые референсы надо еще вместо 1.2, это я сделал.
И вот выкатываются алерты - методы устаревшие и прочее...
Где бы посмотреть какие методы вместо устаревших?
В моем случае ругается на эти вещи:
1.sec.Bars[i].Close >= sec.Bars[i].Open "Cannot apply indexing to an expression of type System.Collections.Generic.Ireadonlylist'1'
sec - это инструмент ISecurity
2. sec.Bars.Count - cannot resolve symbol Count
ругается на свойство
3. var pane = ctx.CreatePane("Главная", 100, false); // создание первой панели
var lst = pane.AddList("Инструмент " + sec.Symbol, sec, CandleStyles.BAR_CANDLE, true, true, true, true, color, PaneSides.RIGHT);
пишет устаревшие методы
4.pane = ctx.Panes[0];
Cannot convert source type TSLab.Script.Ibasepane to target type TSLab.Script.Igraphpane
Руководство по миграции конечно упростило бы жизнь, а так с моим небольшим опытом сложно все это переделывать...
Автор: Batalex
Re: Перенос скрипта на API из 1.2 в 2.0 - Wed Aug 01 2018 01:54 PM
Никак не могу разобраться сам, просьба помочь, если возможно.
Как правильно переписать скрипт и использовать IBar вместо класса Bar?
Как записать это: sec.Bars[i].Close и это: sec.Bars.Count
при помощи IBar?
Программированием занимаюсь недавно, поэтому сам не смог разобраться к сожалению.
Автор: vyudin77
Re: Перенос скрипта на API из 1.2 в 2.0 - Fri Aug 17 2018 04:48 AM
Если у Вас есть ReSharper(на официальном сайте можно на 30 дней пробник взять бесплатно или помесячная оплата около 900 руб.) выбираете то что вам не понятно, правой кнопкой щелкаете и из таблицы выбираете Navigate из следующей таблицы выбираете Decompiled Sources и получаете код исходников.
Как я понял нужно писать ISecurity source (не sec) и соответственно source.Bars[i].Close >= source.Bars[i].Open
Попробуйте sec заменить на source
Автор: vyudin77
Re: Перенос скрипта на API из 1.2 в 2.0 - Fri Aug 17 2018 05:03 AM
Мне вот самому не понятно
1. [HandlerCategory("YUWN")]
[HandlerName("SmaOpen")]- пишет что является устаревшим.
В исходниках
/// <summary>
/// \~english This attribute changes the handler type name \~russian Этот атрибут изменяет имя типа обработчика
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
[Obsolete]
public class HandlerName : Attribute
{
/// <summary>\~english Constructor \~russian Конструктор</summary>
/// <param name="name">\~english the name \~russian Имя</param>
public HandlerName(string name)
: this(name, (string) null, false)
{
}
/// <summary>\~english Constructor \~russian Конструктор</summary>
/// <param name="name">\~english the name \~russian Имя</param>
/// <param name="folder">\~english the folder name \~russian Имя папки</param>
/// <param name="isDynamic">\~english handler has dynamic type or not \~russian обработчик имеет диамический тип или нет</param>
public HandlerName(string name, string folder, bool isDynamic)
{
this.Name = name;
this.Folder = folder;
this.IsDynamic = isDynamic;
}
В другом файле все принимается не выдает ошибок???
Автор: Batalex
Re: Перенос скрипта на API из 1.2 в 2.0 - Fri Aug 24 2018 04:34 PM
Я разобрался в итоге. Но при этом все равно почему то многие методы устаревшими обозначены.
Например - создание нового окна с определенным процентом размера.
Пишет - устарел - при этом нет аналога нового.
pane = ctx.CreatePane("Панель", 10, false);
новый метод CreateGraphPane - но там размер не задашь.
Или доступ к массивам OCHL такого вида sec.LowPrices - тоже пишет устаревший.
Непонятно что это должно означать - устаревший. Что его скоро отрубят или что?
Автор: vyudin77
Re: Перенос скрипта на API из 1.2 в 2.0 - Tue Aug 28 2018 07:33 AM
Я только изучаю программирование сам мучаюсь не могу со многим разобраться.
Попробуйте посмотреть машинный код
Инструменты => Папка с логами => temp
Там лежат файлы cs из того что вы делаете в визуальном редакторе
Автор: vyudin77
Re: Перенос скрипта на API из 1.2 в 2.0 - Tue Aug 28 2018 08:54 AM
Судя по всему программа просто еще "сырая" не доработанная. Иначе кто нибудь на форуме давно бы пояснил в чем проблема.
Пробовал подписаться на техподдержку премиум, но там нет программистов консультируют только по настройкам программы.
Так что пока 1.2. или учить метатрейдер