У вас не стоит Flash Player
Настройки
#83539 - Thu Jul 05 2018 03:46 PM Перенос скрипта на API из 1.2 в 2.0
Batalex Offline
newbie

Registered: Mon Dec 28 2015
Записи: 30
Просьба подсказать как правильно перенести скрипт на коде в версию 2.0?

Как узнать какие классы устаревшие и не пашут в 2.0?
Есть какое то детальное руководство по совместимости?
Это не помогло, у меня скрипт а не индикатор.
http://support.tslab.ru/index.php?/Knowl...12-v-versiyu-20

Год скрипт не трогал, позабыл немного всю эту кухню. Как мне в VS 2010 увидеть что классы не подходят к 2.0?

Наверх
#83540 - Thu Jul 05 2018 04:22 PM Re: Перенос скрипта на API из 1.2 в 2.0 [Re: Batalex]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8134
По факту разница между инструкцией для индикатора и для скрипта не сильно отличается.
http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7811#Post7811
Кухня простая.
Подцепить TSLab в проект студии.
В TSLab запустить дебаггер, в настройках программы.
в оптимизации скриптов флаг "Отладка скриптов"

Наверх
#83541 - Thu Jul 05 2018 05:32 PM Re: Перенос скрипта на API из 1.2 в 2.0 [Re: ViL]
Batalex Offline
newbie

Registered: Mon Dec 28 2015
Записи: 30
Ну в проекте студии подцепить новые референсы надо еще вместо 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

Руководство по миграции конечно упростило бы жизнь, а так с моим небольшим опытом сложно все это переделывать...

Наверх
#83595 - Wed Aug 01 2018 01:54 PM Re: Перенос скрипта на API из 1.2 в 2.0 [Re: Batalex]
Batalex Offline
newbie

Registered: Mon Dec 28 2015
Записи: 30
Никак не могу разобраться сам, просьба помочь, если возможно.
Как правильно переписать скрипт и использовать IBar вместо класса Bar?

Как записать это: sec.Bars[i].Close и это: sec.Bars.Count
при помощи IBar?
Программированием занимаюсь недавно, поэтому сам не смог разобраться к сожалению.

Наверх
#83678 - Fri Aug 17 2018 04:48 AM Re: Перенос скрипта на API из 1.2 в 2.0 [Re: Batalex]
vyudin77 Offline
journeyman

Registered: Sun May 26 2013
Записи: 84
Если у Вас есть ReSharper(на официальном сайте можно на 30 дней пробник взять бесплатно или помесячная оплата около 900 руб.) выбираете то что вам не понятно, правой кнопкой щелкаете и из таблицы выбираете Navigate из следующей таблицы выбираете Decompiled Sources и получаете код исходников.

Как я понял нужно писать ISecurity source (не sec) и соответственно source.Bars[i].Close >= source.Bars[i].Open

Попробуйте sec заменить на source

Наверх
#83679 - Fri Aug 17 2018 05:03 AM Re: Перенос скрипта на API из 1.2 в 2.0 [Re: vyudin77]
vyudin77 Offline
journeyman

Registered: Sun May 26 2013
Записи: 84
Мне вот самому не понятно
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;
}
В другом файле все принимается не выдает ошибок???


Attachments
HandlerName.png (56 downloads)
Source.png (59 downloads)


Наверх
#83741 - Fri Aug 24 2018 04:34 PM Re: Перенос скрипта на API из 1.2 в 2.0 [Re: vyudin77]
Batalex Offline
newbie

Registered: Mon Dec 28 2015
Записи: 30
Я разобрался в итоге. Но при этом все равно почему то многие методы устаревшими обозначены.
Например - создание нового окна с определенным процентом размера.
Пишет - устарел - при этом нет аналога нового.
pane = ctx.CreatePane("Панель", 10, false);
новый метод CreateGraphPane - но там размер не задашь.

Или доступ к массивам OCHL такого вида sec.LowPrices - тоже пишет устаревший.
Непонятно что это должно означать - устаревший. Что его скоро отрубят или что?

Наверх
#83750 - Tue Aug 28 2018 07:33 AM Re: Перенос скрипта на API из 1.2 в 2.0 [Re: Batalex]
vyudin77 Offline
journeyman

Registered: Sun May 26 2013
Записи: 84
Я только изучаю программирование сам мучаюсь не могу со многим разобраться.

Попробуйте посмотреть машинный код

Инструменты => Папка с логами => temp

Там лежат файлы cs из того что вы делаете в визуальном редакторе

Наверх
#83751 - Tue Aug 28 2018 08:54 AM Re: Перенос скрипта на API из 1.2 в 2.0 [Re: vyudin77]
vyudin77 Offline
journeyman

Registered: Sun May 26 2013
Записи: 84
Судя по всему программа просто еще "сырая" не доработанная. Иначе кто нибудь на форуме давно бы пояснил в чем проблема.
Пробовал подписаться на техподдержку премиум, но там нет программистов консультируют только по настройкам программы.
Так что пока 1.2. или учить метатрейдер

Наверх


Moderator:  ViL, sar