S#

ExpressionIndexSecurity в Shell не рассчитывается


ExpressionIndexSecurity в Shell не рассчитывается
Atom Reply
6/2/2019


Здравствуйте, возник вопрос по формированию индексного графика в Shell. Пытаюсь сделать индекс при помощи ExpressionIndexSecurity и RoslynCompilerService, но индекс не формируется, в графе Expression после инициализации нового инструмента остается null, соответственно и инструмента нет, ошибок никаких не выдает C#. При этом вне рамок Shell все нормально работает. На приложенном скрине два варианта остановы, в которых видно , что в обычной форме индекс создается, а во втором (Shell) нет. Я в Shell пытался код с формированием индекса включать даже при инициализации главной формы но результат тот же. Не пойму, что я делаю не так?



Thanks:




9 Answers
Support

Avatar
Date: 6/6/2019
Reply


Добрый день

Пожалуйста, пришлите ваш код на support@stocksharp.com
Thanks:

allint29

Avatar
Training
Date: 6/6/2019
Reply


Support Перейти
Добрый день

Пожалуйста, пришлите ваш код на support@stocksharp.com

Добрый день выслал на почту код из shell.
Topic starter
Thanks:

Support

Avatar
Date: 6/8/2019
Reply


Добрый день

Попробуйте вместо RoslynCompilerService использовать следующий:

Код
ConfigManager.RegisterService<ICompilerService>(new Fw40CompilerService(Directory.GetCurrentDirectory(), Directory.GetCurrentDirectory()));


После этого ваш код у нас заработал:

Код
_indexSecurity = new ExpressionIndexSecurity()
{
Id = "INDEXTWO@FORTS",
Code = "IndexMy",

Expression = "RIM9@FORTS-10000",
Board = ExchangeBoard.Micex,
};

     var result = _indexSecurity.Formula.Calculate(new[] { 167.43m });

     if (result != -9832.57m)
     {
         throw new Exception(result.ToString());
     }
Thanks:

allint29

Avatar
Training
Date: 6/11/2019
Reply


Здравствуйте, данная корректировка помогла, начали производиться вычисления, но теперь вычисления заканчиваются на открытии свечи, то есть если взять индекс без всяких коэффициентов, то на выходе получаю бар с открытием закрытием и телом в одну точку равным открытию бара данного инструмента на данном таймфрейме. Сначала думал, что индекс строится не из сделок а из свечей таймфрейма, но пробовал разные таймфреймы нестандартные, всегда бар начинается и заканчивается открытием свечи того таймфрейма, который выбран. Скрин экрана прилагаю. Еще хочу уточнить, что на версии 4.4.5.4 из учебного примера все работает как надо на тех же данных.QuestByShellIndex2.jpg
QuestByShellIndex2.jpg 131.4KB (18)
Topic starter
Thanks:

Support

Avatar
Date: 6/11/2019
Reply


Просьба уточнить ваш вопрос. В Шелл не было индексов. О каком архиве идёт речь?
Thanks:

allint29

Avatar
Training
Date: 6/11/2019
Reply


Support Перейти
Просьба уточнить ваш вопрос. В Шелл не было индексов. О каком архиве идёт речь?


Я не только про Shell описываю, а программу которая написана на библиотеке версии (на которых пробовал) 4.4.15 и 4.4.16. В Shell которая у меня, например, версия библиотеки StockSharp.Algo 4.4.15 (версию библиотеки смотрю в свойствах ссылок на библиотеку), а версия из учебного примера (в котором все работает нормально) - 4.4.5.4, там даже модуль Expression выведен в отдельный файл. Я не разработчик данной библиотеки, но считаю что это баг, или, возможно, с версии обучающего видео процедура расчета индекса изменилась и тогда хотелось бы узнать эту процедуру.
Topic starter
Thanks:

Support

Avatar
Date: 6/11/2019
Reply


Пожалуйста, пришлите ваш код для воспроизведения ошибки.
Thanks:

allint29

Avatar
Training
Date: 6/11/2019
Reply


Support Перейти
Пожалуйста, пришлите ваш код для воспроизведения ошибки.

В спойлере - код.

Topic starter
Thanks:

Support

Avatar
Date: 6/12/2019
Reply


В приложении модицифированный пример SampleHistoryTesting, который выводит индексные свечи согласно формуле:

508e1b0ebae2eec2b77394615221a0d4.png
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy