Создание CandleManager при неодновременном запуске двух стратегий в одном приложении


Создание CandleManager при неодновременном запуске двух стратегий в одном приложении
Atom
1/4/2017


Имеется приложение, которое позволяет запускать несколько стратегий одновременно.
Поясните, пожалуйста, каков подход Стокшарпа, экземпляр CandleManager должен создаваться свой отдельный на каждую стратегию, или один общий?
При создании отдельного CandleManager на каждую стратегию, каким образом решается проблема, что второй созданный CandleManager не получает тиковые данные с начала текущей торговой сессии по тому же инструменту, по которому первый CandleManager их успешно получил и построил на их основании свечки?
При создании одного общего CandleManager на все стратегии, каким образом должна решаться проблема, что вторая запускаемая стратегия не получит уже сформированные к моменту ее запуска свечки?



Thanks:


< 1 2 3 
Support

Avatar
Date: 1/27/2017
Reply


Я не вижу в этом никакой проблемы...Получение свечей проходит очень быстро... Можно конечно проверять, но это принципиально ни на что не повлияет...
Thanks:

Evgeny

Avatar
Date: 1/27/2017
Reply


Скажите, пожалуйста, если все-таки создавать дополнительный CandleSeries, то по свечам, которые уже были сформированы к моменту запуска второй стратегии, во второй стратегии должны срабатывать правила WhenCandlesStarted, WhenCandlesChanged и т.д.? Или только правило окончания свечи?
Thanks:

Support

Avatar
Date: 1/30/2017
Reply


Да.
Thanks:

RomSunZ

Avatar
Date: 2/2/2017
Reply


В общем суть проблемы в том, что класс RealTimeCandleBuilderSource, который является базовым для TradeCandleBuilderSource, вызывает метод AddNewValues только когда получает новый тик. А в этом методе идет проверка
Code

                    if (series.IsNew)
                    {
                        RaiseProcessing(series, Convert(GetSecurityValues(security)).OrderBy(v => v.Time));
                        series.IsNew = false;
                    }
                    else
                    {
                        RaiseProcessing(series, securityValues);
                    }

в котором проверяется новая серия или нет. Если новая идет запрос всех сделок, если нет - обрабатываются поступившие.
Вам нужно переписать этот класс и запрос всех сделок делать сразу после добавления новой серии.
Thanks:
< 1 2 3 

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

loading
clippy