← Back

Как переопределить генератор свечек?

Добрый день.

Вопрос - собственно subj. Как правильно переопределить генератор свечек?

Зачем - хочу попробовать стратегию с нескольких тайм-фреймов. Для этого Builder должен создавать все виды требуемых свечек. Или нужно сделать несколько параллельных билдеров. Собственно написать код - не проблема. Важно не делать лисапед, а использовать по максимум готовый функционал.

Спасибо =)

Comments (13)

Login or Create account, Log in or register to leave a comment

esper
esper

Почему просто в CandleManager не зарегистрировать все нужные типы/таймфреймы свечек?

VoDA
VoDA
VoDA Author

esper: Почему просто в CandleManager не зарегистрировать все нужные типы/таймфреймы свечек? В принципе так и сделал.

Теперь другая проблема - как заставить CandleManager выдать последнюю свечу? Для примера - создаю CandleBuilder с начала дня до его окончания (с 00:00:00 до 00:00:00 следующего дня) Если указать TimeFrame 5-min то выдаст все свечки, кроме последней (с 23:55 по 00:00), а если указать тайм-фрейм один день, то ни какого ответа нет. Может есть возможность принудительно закрыть финальную свечу?

Получаю свечки через CandleFinished.

OvcharenkoVI
OvcharenkoVI

Последнюю свечку и не получите, так как сделки после окончания сессии не существует

VoDA
VoDA Author

OvcharenkoVI: Последнюю свечку и не получите, так как сделки после окончания сессии не существуетСессии - нет, но данные то есть!

Почему бы их не выгрузить?

Попытка получить свечку через GetCurrentTimeFrameCandle не проходит - летит эксепшен "Инструмент не имеет информацию о шлюзе.".

А как подпихнуть в CandleManager еще один такт данных?

OvcharenkoVI
OvcharenkoVI

Можете сами сгенерить сделку с такими же параметрами как последняя(которую вы уже имеете), но с другим временем и закроете последнюю свечу

VoDA
VoDA
VoDA Author

OvcharenkoVI: Можете сами сгенерить сделку с такими же параметрами как последняя(которую вы уже имеете), но с другим временем и закроете последнюю свечу А как подложить сделку под CandleManager?

VoDA
VoDA Author

OvcharenkoVI: Можете сами сгенерить сделку с такими же параметрами как последняя(которую вы уже имеете), но с другим временем и закроете последнюю свечу Продолжаю войну с CandleManager. При попытке воспользоваться token, который возвращает RegisterTimeFrameCandles, в методе GetCurrentTimeFrameCandle дает ошибку "Value cannot be null. Parameter name: trader".

Что еще можно сделать?

OvcharenkoVI
OvcharenkoVI

VoDA:

OvcharenkoVI: Можете сами сгенерить сделку с такими же параметрами как последняя(которую вы уже имеете), но с другим временем и закроете последнюю свечу Продолжаю войну с CandleManager. При попытке воспользоваться token, который возвращает RegisterTimeFrameCandles, в методе GetCurrentTimeFrameCandle дает ошибку "Value cannot be null. Parameter name: trader".

Что еще можно сделать?

а как создавался менеджер? должно быть candleManager = new CandleManager(Trader);

VoDA
VoDA Author

OvcharenkoVI: а как создавался менеджер? должно быть candleManager = new CandleManager(Trader);по примеру:

var storage = new TradingStorage(new InMemoryStorage())
                              {
                                  BasePath = _dataFolder.Text,
                              };

var builder = new CandleBuilder(new TradeStorageCandleBuilderSource(storage)
{
    From = begin,
    To = end,
    IsSyncProcess = true,
})
                                  {
                                      IsSyncRegister = true,
                                  };

begin и end указывают соответственно начало и конец данных, которые обрабатываю в цикле.

VoDA
VoDA Author

Может стоит с другого конца зайти - как вытащить из гидры все данные по инструменту в виде свечек различного размера?

OvcharenkoVI
OvcharenkoVI

Кажется вы еще не используете 4.1, GetCurrentTimeFrameCandle вызывается через candleSeries.GetCurrentTimeFrameCandle

VoDA
VoDA
VoDA Author

OvcharenkoVI: Кажется вы еще не используете 4.1, GetCurrentTimeFrameCandle вызывается через candleSeries.GetCurrentTimeFrameCandle Спасибо, обошел эту проблему )))

OvcharenkoVI
OvcharenkoVI

На счет гидры не знаю, так как не пользуюсь