Разрыв связи-восстановление

Разрыв связи-восстановление
Atom
8/5/2011


Подскажите, пожалуйста.

Никак до конца не разберусь с восстановлением работы робота после разрыва связи.

1. Терминал Quik, с которым работаю использует двухфакторную аутентификацию (сначала указывается файл с настройками, потом вводится пароль) Я так понимаю - это доработки брокера. Возможно ли как-то автоматически поднять робота?

2. Сам код для восстановления связи такой:

Code
          // инициализируем механизм переподключения (будет автоматически соединяться
                        // каждые 10 секунд, если шлюз потеряется связь с сервером)
                        this._trader.Trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);

                        // переподключение будет работать только во время работы биржи РТС
                        // (чтобы отключить переподключение когда торгов нет штатно, например, ночью)
                        this._trader.Trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;

                        // подписываемся на событие об успешном восстановлении соединения
                        this._trader.Trader.ReConnectionSettings.ConnectionRestored += () => this.GuiAsync(() =>
                            {
                                _trader.ReStartExport();
                                _trader.RegisterSecurity(_security);
                                _trader.RegisterTrades(_security);
                                _trader.RegisterQuotes(_security);

                                MessageBox.Show(this, "Соединение восстановлено");
                            });


В чем разница использования свойства IsReStartExport и вызова вручную метода ReStartExport()? И как узнать нужно ли делать перезапуск экспорта?

Такой код почему-то вызывает два раза сообщение MessageBox.Show(this, "Соединение восстановлено")

3. После восстановления соединения все сделки в грид _trades добавляются по два раза

4. Линии индикатора перестают отрисовываться. В коде количество свечек всегда равно 0.
Code

        // получаем эти свечки
                var candles = _candleManager.GetTimeFrameCandles(_strategy.Security, _timeFrame, bounds);

                if (candles.Count() > 0)
                {
                    // получаем время самой последней свечки и запоминаем его как новое начало
                    _lastCandleTime = candles.Max(c => c.Time);

                    DrawLines(bounds.Min);
                }


Tags:


Thanks:


< 1 2 
Евгений

Avatar
Date: 8/18/2011
Reply


А через какое событие отлавливать, что Quik закрылся?
Thanks:

Mikhail Sukhov

Avatar
Date: 8/18/2011
Reply


Евгений Go to
А через какое событие отлавливать, что Quik закрылся?


Такого нет. Разве что как-то по QuikTeminal.SystemProcess мониторить уже средствами .NET. Но я думаю проще это смотреть через потерю соединения.
Thanks: Евгений

Mikhail Sukhov

Avatar
Date: 8/18/2011
Reply


Евгений Go to

Ну чем смогу-помогу. Подключить этот терминал к демо-счету у них нельзя.


Как получить работающий сертификат (cert.pem)? Достаточно будет чтобы его приняло первое окно. Чтобы пароль проходил не так важно.
Thanks:
< 1 2 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy