WorkingTime в CandleSeries
Atom Ответить
05.10.2015


Добрый день.

Столкнулся сейчас с ситуацией, когда в CandleSeries ставлю свой WorkingTime, но CandleSeries все равно поставляет свечки по расписанию площадки по-умолчанию (в частности, до 18:45, а я ставил до 23:50) (свечки получаю через событие CandleManager.Processing):
Код
m_CandleSeries = new CandleSeries(typeof(TimeFrameCandle), s, m_Timeframe) { WorkingTime = m_WorkingTime };


При этом - чудо чудесное! - работает такой способ:
Код
m_CandleSeries = new CandleSeries(typeof(TimeFrameCandle), s, m_Timeframe);
m_CandleSeries.WorkingTime.Periods[0].Times[0].Min = m_WorkingTime.Periods[0].Times[0].Min;
m_CandleSeries.WorkingTime.Periods[0].Times[0].Max = m_WorkingTime.Periods[0].Times[0].Max;


В связи с чем, хотел уточнить, что я делаю не так? Как положено обращаться с WorkingTime? Или у него разная логика для разных объектов?

И в связи с таким непонятным поведением на всякий случай вопрос: Clone() ведь не обязательно вызывать, если я один и тот же WorkingTime использую в разных местах только для чтения? Хотя, я с Clone() тоже на всякий случай попробовал, не помогает. :)

UPD. Еще попутный вопрос: обратил внимание, что RealTimeEmulationTrader<T>.ReConnectionSettings.WorkingTime, который я использую, также влияет на расписание поставки свечей (с ним проблем нет, но связь этого расписания с расписанием поставки свечек для меня не очевидна). И я хотел узнать, в каких еще объектах и свойствах WorkingTime оказывает влияние на поставку свечек? (Или куда хотя бы копать в исходниках?)

Теги:


Спасибо:




2 Ответов
Валентин Лебедев

Фотография
Программист
Дата: 05.10.2015
Ответить


Код
m_CandleSeries.WorkingTime.Periods[0].Times[0].Min = m_WorkingTime.Periods[0].Times[0].Min;
m_CandleSeries.WorkingTime.Periods[0].Times[0].Max = m_WorkingTime.Periods[0].Times[0].Max;

Таким образом ты скорее всего просто меняешь расписание площадки, которое используется и в других местах.
А то что такой код не работает
Код
m_CandleSeries = new CandleSeries(typeof(TimeFrameCandle), s, m_Timeframe) { WorkingTime = m_WorkingTime };

может означать что CandleSeries для расчетов берет его не из своего свойства WorkingTime.
Подробнее нужно смотреть на гитхабе.
Спасибо:

pafnuty

Фотография
Программист
Дата: 06.10.2015
Ответить


"скорее всего..." и "может означать..." - это все понятно. :) Я хотел узнать, это ошибка в реализации или так и должно быть? Т.е. как подразумевает сам автор логику работы с WorkingTime? Чтобы в исходники лезть, мне надо понимать, что исправлять (и надо ли это вообще делать).
Автор топика
Спасибо:


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

loading
clippy