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

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


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



Спасибо:


< 1 2 3 
Support

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


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

Evgeny

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


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

Support

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


Да.
Спасибо:

RomSunZ

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


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

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

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

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

loading
clippy