Разрыв связи-восстановление
Подскажите, пожалуйста.
Никак до конца не разберусь с восстановлением работы робота после разрыва связи.
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);
}