ExpressionIndexSecurity в Shell не рассчитывается
Atom Ответить
02.06.2019


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



Спасибо:




9 Ответов
Support

Фотография
Дата: 06.06.2019
Ответить


Добрый день

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

allint29

Фотография
Курсы
Дата: 06.06.2019
Ответить


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

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

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

Support

Фотография
Дата: 08.06.2019
Ответить


Добрый день

Попробуйте вместо 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());
     }
Спасибо:

allint29

Фотография
Курсы
Дата: 11.06.2019
Ответить


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

Support

Фотография
Дата: 11.06.2019
Ответить


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

allint29

Фотография
Курсы
Дата: 11.06.2019
Ответить


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


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

Support

Фотография
Дата: 11.06.2019
Ответить


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

allint29

Фотография
Курсы
Дата: 11.06.2019
Ответить


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

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

Автор топика
Спасибо:

Support

Фотография
Дата: 12.06.2019
Ответить


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

508e1b0ebae2eec2b77394615221a0d4.png
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy