При перезапуске программы теряется подписка на обн.свечи
Доброго времени суток)
Я у вас тут не давно... Прошу помочь не понимаю.
Создал робота с двумя табами, что бы использовать на них разные таймфреймы.
В иницилизации робота прописал подписку на обновление свечи CandleUpdateEvent
Тестирую бой, при добавлении робота и настройке данных все работает корректно.
Но если закрыть программу и открыть ее снова, подгружается сохраненный робот, подключаюсь к данным. Данные обновляются, но вот событие больше не срабатывает О_о.
Я как то даже не знаю как глубоко и куда рыть?
Спасибо.
Код:
public ChiliFastBot(string name, StartProgram startProgram) : base(name, startProgram)
{
TabCreate(BotTabType.Simple);
TabCreate(BotTabType.Simple);
_tab1 = TabsSimple[0];
_tab2 = TabsSimple[1];
tf1 = CreateParameter("TF1", "Min30", new[] { "Min1", "Min5", "Min10", "Min15", "Min20", "Min30", "Min45", "Hour1", "Hour2", "Hour4" });
tf2 = CreateParameter("TF2", "Hour1", new[] { "Min1", "Min5", "Min10", "Min15", "Min20", "Min30", "Min45", "Hour1", "Hour2", "Hour4" });
TimeFrame TF;
_tab1.Connector.TimeFrame = Enum.TryParse(tf1.ValueString.ToString(), out TF) ? TF : TimeFrame.Min1;
_tab2.Connector.TimeFrame = Enum.TryParse(tf2.ValueString.ToString(), out TF) ? TF : TimeFrame.Min1;
//длинная простыня объявления индикаторов, линий и объема
_tab1.CandleUpdateEvent += CandleUpdate;
DeleteEvent += Strategy_DeleteEvent;
ParametrsChangeByUser += Event_ParametrsChangeByUser;
_tab1.PositionClosingFailEvent += _tab1_PositionClosingFailEvent;
_tab1.PositionOpeningFailEvent += _tab1_PositionClosingFailEvent;
}
private void UpdCandle(List<Candle> candles)
{
Цитата: Ghost-mo
Доброго времени суток)
Я у вас тут не давно... Прошу помочь не понимаю.
Создал робота с двумя табами, что бы использовать на них разные таймфреймы.
В иницилизации робота прописал подписку на обновление свечи CandleUpdateEvent
Тестирую бой, при добавлении робота и настройке данных все работает корректно.
Но если закрыть программу и открыть ее снова, подгружается сохраненный робот, подключаюсь к данным. Данные обновляются, но вот событие больше не срабатывает О_о.
Я как то даже не знаю как глубоко и куда рыть?
Спасибо.
Код:
public ChiliFastBot(string name, StartProgram startProgram) : base(name, startProgram)
{
TabCreate(BotTabType.Simple);
TabCreate(BotTabType.Simple);
_tab1 = TabsSimple[0];
_tab2 = TabsSimple[1];
tf1 = CreateParameter("TF1", "Min30", new[] { "Min1", "Min5", "Min10", "Min15", "Min20", "Min30", "Min45", "Hour1", "Hour2", "Hour4" });
tf2 = CreateParameter("TF2", "Hour1", new[] { "Min1", "Min5", "Min10", "Min15", "Min20", "Min30", "Min45", "Hour1", "Hour2", "Hour4" });
TimeFrame TF;
_tab1.Connector.TimeFrame = Enum.TryParse(tf1.ValueString.ToString(), out TF) ? TF : TimeFrame.Min1;
_tab2.Connector.TimeFrame = Enum.TryParse(tf2.ValueString.ToString(), out TF) ? TF : TimeFrame.Min1;
//длинная простыня объявления индикаторов, линий и объема
DeleteEvent += Strategy_DeleteEvent;
ParametrsChangeByUser += Event_ParametrsChangeByUser;
_tab1.PositionClosingFailEvent += _tab1_PositionClosingFailEvent;
_tab1.PositionOpeningFailEvent += _tab1_PositionClosingFailEvent;
}
private void UpdCandle(List<Candle> candles)
{
На событие UpdCandle - нужно подписаться у каждой вкладки отдельно.
_tab.CandleUpdateEvent += ... вот так. Не вижу у Вас этой конструкции. Добавьте.
При убирании лишнего случайно стер:
_tab1.CandleUpdateEvent += CandleUpdate;
Еще не сказал проблема на коннекторе Binance Futures.
Цитата: Ghost-mo
?
Комрад. Это не стандартный способ подписки на события. Стандартно - сделать N источников и настроить его ручками из интерфейсов один раз. Если Вы хотите как-то по хитрому это делать, сами. И не стандартно. То надо делать это самому и разбираться тоже.
Цитата: Алексей Ван
Цитата: Ghost-mo
?
Комрад. Это не стандартный способ подписки на события. Стандартно - сделать N источников и настроить его ручками из интерфейсов один раз. Если Вы хотите как-то по хитрому это делать, сами. И не стандартно. То надо делать это самому и разбираться тоже.
Прошу простить за коломбур, исправил первое сообщение, что бы было понятней, добавил строку _tab1.CandleUpdateEvent где она была. (Прикрепил код без вырезаний, проблема в том, что ни точка остановки в CandleUpdate, ни логи не появляются)
Не считая того, что я использую CandleUpdateEvent все вроде как стандартно относительно.
У меня один инструмент, но разные тайм фремы для разных вкладок. Что бы не мучать компьютер, подписываюсь на события изменения свечи только первой вкладки, т.к. во второй изменения такие же.
И при первом подключении все хорошо работает. Но после рестарта программы, и даже если перевыбрать таймфрейм, подпись на данные не происходит почему то. Может потому, что после рестарта коннекта нет?
не понял что за коннект. Если коннект к серверам, то да. Нужен коннект.
Если про коннект роботов к серверам. То можно попробовать вызывать принудительное переподключение. Посмотрите в TabsSimple[i].Connector.Reconnect(); Что-то такое там должно быть.
Добрый день!
Присоединяюсь к вопросу. Та же история на InteractiveBrokers. Событие срабатывает только один раз.
Если удалось решить, прошу поделиться.
ООО «ВАН ТЕХНОЛОГИИ»т: +7 953 769 56 45
* Торговля на финансовых рынках связана с риском, который лежит на Вас.
* Ничто из написанного на сайте o-s-a.net не является рекомендацией.
* Если Вы этого не понимаете, не читайте этот сайт, ничего не покупайте.