Перенос скрипта на API из 1.2 в 2.0

Автор: 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. или учить метатрейдер