Mikhail Sukhov
|
Date: 1/5/2017
Это все зависит от кода стратегий и самого приложения.
Подхода стокшарпа не существует, так как это АПИ, а не конкретное приложение. Есть подход по правильному написанию программ на .NET и WPF. Лучше их читать.
|
|
Thanks:
|
|
|
|
|
RomSunZ
|
Date: 1/6/2017
Вообще-то в разных стратегиях если Вы подписались на инструменты и сделки в обоих, то и candlemanager каждой стратегии строят свечки не зависимо друг от друга. По крайней мере в более поздних версиях именно так. Проверяйте свой код.
|
|
Thanks:
|
|
|
|
|
Evgeny
|
Date: 1/7/2017
RomSunZ, у меня главная предпосылка была, что стратегии и их соответствующие candlemanager`ы запускаются неодновременно. То есть сначала запускается первая стратегия с первым менеджером свечек, происходит подписка на тики по инструменту и этот первый менеджер свечек все нормально строит. Затем (например, через час) запускается вторая стратегия со вторым менеджером свечек. Этот второй менеджер свечек тоже подпишется на событие получения новых сделок (TradeCandleBuilderSource), но ведь от этого второй менеджер свечек уже все равно не получит тики за первый час, пока работал только первый менеджер свечек. Или не так и я что-то упустил?
|
|
Thanks:
|
|
|
|
|
gem81
|
Date: 1/9/2017
Вопрос возник такой же) Попробую пояснить что не так. Есть соединение public QuikTrader client = new QuikTrader(); общее для всего приложения. Далее Мы создаём TradeCandleBuilderSource(client) и запускаем _candleManager.Start(_series); я опустил все инициации серий и т.п. затем через какое-то время мы нажимаем кнопку запустить второй алгоритм по тому же инструменту. Скрипт так сделан, что контролирует количество открытых им позиций по алгоритму, и ему не важно, сколько открывает позиций параллельный алгоритм. И вот теперь при попытке запустить второй экземпляр окна со своим набором TradeCandleBuilderSource(client) и _candleManager.Start(_series); ничего не происходит. из глобальных переменных тут только client, всё остальное формируется в классе нового окна с чартом. [cursing] пояснил, у самого моск подкоптился
|
|
Thanks:
|
|
|
|
|
RomSunZ
|
Date: 1/9/2017
Вопрос на засыпку, как в примерах с отдельными ChartWindow (суть с разными экземплярами "стратегий") все строится, а у Вас нет?
|
|
Thanks:
|
|
|
|
|
gem81
|
Date: 1/9/2017
RomSunZ Вопрос на засыпку, как в примерах с отдельными ChartWindow (суть с разными экземплярами "стратегий") все строится, а у Вас нет? Написано всё как в примере. Результат на картинке. Первый раз всё вырисовывает, открываешь второй раз чарт по тому же инструменту, пусто
|
|
Thanks:
|
|
|
|
|
RomSunZ
|
Date: 1/9/2017
На сколько помню, при запуске candlemanager можно было задавать начальную/конечную дату. Попробуйте, может быть поможет.
|
|
Thanks:
|
|
|
|
|
Evgeny
|
Date: 1/10/2017
Я запустил у себя стандартный пример со свечками. И ожидаемо увидел тоже самое. При открытии того же окна с тем же инструментом график рисоваться не будет. С другим инструментом - будет, а с тем же - нет. И причина, насколько я понимаю, именно в том, что TradeCandleBuilderSource, который отвечает за построение онлайн свечек, вызывает перестроение свечи только при появлении нового тика. А когда открывается второе окно - старые тики, поступившие к этому моменту, второй раз не поступят, и соответственно свечи заново не сгенерятся. Возможно проблему можно решить добавив другой источник, который построит свечи либо по данным в хранилище, либо по данным коллекции тиков. Но в обоих случаях я вижу подводные камни. Я поэтому и хотел, чтобы на эту тему отписались разработчики. Каким-то образом, они же решали эту проблему, например, в дизайнере.
|
|
Thanks:
|
|
|
|
|
Support
|
Date: 1/12/2017
1. Я бы рекомендовал использовать один CandleManager 2. "По повод тиков с начала сессии". Для CandleManager существуют "источники данных", в частности, для работы с тиковыми реал-тайм данными используется RealTimeCandleBuilderSource<T>. Вы можете попробовать использовать для каждого CandleManager один RealTimeCandleBuilderSource. 3. Все сформированные свечи хранятся в контейнере CandleManager. Эту "историю" Вы можете использовать при запуске второй стратегии.
|
|
Thanks:
|
|
|
|
|
Support
|
Date: 1/12/2017
|
|
|
|
gem81 Вопрос возник такой же) Попробую пояснить что не так. Есть соединение public QuikTrader client = new QuikTrader(); общее для всего приложения. Далее Мы создаём TradeCandleBuilderSource(client) и запускаем _candleManager.Start(_series); я опустил все инициации серий и т.п. затем через какое-то время мы нажимаем кнопку запустить второй алгоритм по тому же инструменту. Скрипт так сделан, что контролирует количество открытых им позиций по алгоритму, и ему не важно, сколько открывает позиций параллельный алгоритм. И вот теперь при попытке запустить второй экземпляр окна со своим набором TradeCandleBuilderSource(client) и _candleManager.Start(_series); ничего не происходит. из глобальных переменных тут только client, всё остальное формируется в классе нового окна с чартом. [cursing] пояснил, у самого моск подкоптился Если у вас один candleManager, то второй раз вызывать _candleManager.Start(_series) не надо, можно просто во второй стратегии еще раз подписаться на событие CandleManager.Processing.. Вам нужно иметь ссылки на CandleSeries, и каждый раз при попытке вызова candleManager.Start(_series) проверять есть ли такая серия в CandleManager.Series... Если есть, то серия уже запущена... Уже построенные свечи получаем при помощи _candleManager.GetCandles<T>(CandleSeries)...
|
|
Thanks:
|
|
|
|