Подписка на обновление свечи теряется

При перезапуске программы теряется подписка на обн.свечи

  1. Ghost-mo

    Регистрация:
    22.06.20
    Сообщения:
    19
    Был на сайте:
    02.02.23

    Доброго времени суток)

    Я у вас тут не давно... Прошу помочь не понимаю.

    Создал робота с двумя табами, что бы использовать на них разные таймфреймы.

    В иницилизации робота прописал подписку на обновление свечи 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
    24.09.2020 23:14
    #1
  2. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1176
    Был на сайте:
    22.07.24
    Цитата: 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 += ... вот так. Не вижу у Вас этой конструкции. Добавьте.

    Алексей Ван
    25.09.2020 08:16
    #2
  3. Ghost-mo

    Регистрация:
    22.06.20
    Сообщения:
    19
    Был на сайте:
    02.02.23

    При убирании лишнего случайно стер:

    _tab1.CandleUpdateEvent += CandleUpdate;

     

    Еще не сказал проблема на коннекторе Binance Futures.

     

    Ghost-mo
    26.09.2020 17:06
    #3
  4. Ghost-mo

    Регистрация:
    22.06.20
    Сообщения:
    19
    Был на сайте:
    02.02.23

    ?

     

    Ghost-mo
    05.10.2020 08:48
    #4
  5. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1176
    Был на сайте:
    22.07.24
    Цитата: Ghost-mo

    ?

     

    Комрад. Это не стандартный способ подписки на события. Стандартно - сделать N источников и настроить его ручками из интерфейсов один раз. Если Вы хотите как-то по хитрому это делать, сами. И не стандартно. То надо делать это самому и разбираться тоже. 

    Алексей Ван
    05.10.2020 12:58
    #5
  6. Ghost-mo

    Регистрация:
    22.06.20
    Сообщения:
    19
    Был на сайте:
    02.02.23
    Цитата: Алексей Ван
    Цитата: Ghost-mo

    ?

     

    Комрад. Это не стандартный способ подписки на события. Стандартно - сделать N источников и настроить его ручками из интерфейсов один раз. Если Вы хотите как-то по хитрому это делать, сами. И не стандартно. То надо делать это самому и разбираться тоже. 

    Прошу простить за коломбур, исправил первое сообщение, что бы было понятней, добавил строку _tab1.CandleUpdateEvent где она была. (Прикрепил код без вырезаний, проблема в том, что ни точка остановки в CandleUpdate, ни логи не появляются)

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

    У меня один инструмент, но разные тайм фремы для разных вкладок. Что бы не мучать компьютер, подписываюсь на события изменения свечи только первой вкладки, т.к. во второй изменения такие же.

    И при первом подключении все хорошо работает. Но после рестарта программы, и даже если перевыбрать таймфрейм, подпись на данные не происходит почему то. Может потому, что после рестарта коннекта нет?

    Ghost-mo
    05.10.2020 18:24
    #6
  7. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1176
    Был на сайте:
    22.07.24

    не понял что за коннект. Если коннект к серверам, то да. Нужен коннект.

    Если про коннект роботов к серверам. То можно попробовать вызывать принудительное переподключение. Посмотрите в TabsSimple[i].Connector.Reconnect(); Что-то такое там должно быть. 

    Алексей Ван
    07.10.2020 11:52
    #7
  8. mrumskiy

    Регистрация:
    27.11.20
    Сообщения:
    1
    Был на сайте:
    21.02.22

    Добрый день!

    Присоединяюсь к вопросу.  Та же история на InteractiveBrokers. Событие срабатывает только один раз. 

    Если удалось решить, прошу поделиться.

    mrumskiy
    23.12.2021 22:58
    #8