После восстановления соединения новые свечи не приходят

После восстановления соединения новые свечи не приходят
Atom
4/20/2010
Ilya Usenko


S#1.8.

ReConnectionManager соединение восстанавливает,но изменения не приходят. В SampleSMA свечи не будут изменяться. Возможно и другие данные по dde

-- Subscription settings:http://groups.google.com/group/stocksharp/subscribe?hl=ru


Tags:


Thanks:


1 2  >
Mikhail Sukhov

Avatar
Date: 4/20/2010
Reply


А соединение терялось по какой причине?

Thanks:

Ilya Usenko

Avatar
Date: 4/20/2010
Reply


Перезапустил quik

Thanks:

Mikhail Sukhov

Avatar
Date: 4/20/2010
Reply


Нужно экспорт ДДЕ запускать в этом случае.

Thanks:

Ilya Usenko

Avatar
Date: 4/21/2010
Reply


Что подразумевается под потерей соединения, если на разрыв связи(меню

  • разорвать соединение) в квике ConnectionError не вылетает. А вылетает только на закрытие квика. И смысл ReConnectionManager, если нужно нужно запускать экспорт дде? Не понимаю может чего я?
Thanks:

Mikhail Sukhov

Avatar
Date: 4/21/2010
Reply


Да, знаю о баге. Пофиксил еще к выходу 1.8, но не выложил - не провел тестирования (как выяснилось - удачно получилось, потому что в следующем релизе появится Смарт, который уж совсем имеет другую логику, и пришлось бы переделывать). Фикс будет в следующей релизе, честное пионерское =)

Насчет ДДЕ. Давайте обсудим. Дело в том, что ДДЕ устроен другим образом. В связке через trans2quik.dll клиентом является робот. В случае ДД, клиентом является сервер. Если идти от того, что узнавать о умерших клиентах серверу, является плохим дизайном, то нужно пойти по другом подходу. Более того, через QuikTrader.Reconnect идет переподключение только по апи, а по ДДЕ нет. Как я уже описал здесь -

http://stockmarketdotnet.blogspot.com/2010/04/smartcom.htmlя в новой версии добавил ITrader.ConnectionTimeOut В случае QuikTrader, если по ДДЕ не приходит событие, он выбрасывает событие с ошибкой. Я думаю научить ReConnectionManager ловить это событие. А вот что делать дальше, пока не знаю. Все равно ReConnectionManager не умеет запускать ДДЕ.

Thanks:

Ilya Usenko

Avatar
Date: 4/22/2010
Reply


Доброе утро, Михаил! Считаю что ReConnectionManager не нужен. Мне например. Достаточно ловить исключение и выполнять всю последовательность действий, как при старте робота. Можно возложить это несложное дело на программиста.

Может двигаться в другом направлении. Запоминать состояние робота на момент сбоя. Но здесь тоже все непонятно. У всех разные данные, стратегии и т.д. Некоторый набор функций в S# 1.8 уже есть. Пока не пользовался.

Thanks:

Mikhail Sukhov

Avatar
Date: 4/22/2010
Reply


По Вашему описанию уже все сделано (с учетом фикса в новой версии)... На самом деле, если не учитывать падение Квика (что у меня было разы), то ReConnectionManager работает нормально. Если Квик не падает, то и перезапускать ДДЕ не нужно. Даже если инет отключиться, Квик сам переподключится. А ДДЕ при это не останавливается и просто в первую секунду нового соединения разом все данные перетекут. Или не так?

Thanks:

Ilya Usenko

Avatar
Date: 4/23/2010
Reply


Все равно не понял смысла ReConnectionManager. Если квик падает, то ReConnectionManager просто ничего нее делает, кроме как Trader.Connect Если падает связь в работающем квике, то ReConnectionManager вообще ничего не делает. Квик сам восстанавливает соединение и льет данные.

Thanks:

Mikhail Sukhov

Avatar
Date: 4/27/2010
Reply


Как я уже написал - фикс есть.

Сразу хочу уточнить. В ReConnectionManager я вкладывал логику не столько самовосстанавливающегося помощника к роботу, сколько уведомителя. Упал Квик или он перестал слать данные по ДДЕ - событие о тайм ауте. Прервалась связь - событие о разрыве соединения. Все эти событие более нужны не роботу, а человеку. Чтобы трейдер был оповещен как можно раньше (вряд ли робот может восстановить потерю интернета, здесь нужен человек, чтобы позвонить провайдеру). Не следить же 100% за роботом весь день - есть и другие задачи.

Thanks:

Garry

Avatar
Date: 5/2/2010
Reply


А почему не получается запустить DDE после закрытия и открытия квика? Делаю вот так: _reConnectionManager = new ReConnectionManager(this.Trader, TimeSpan.FromSeconds(10), new Range<TimeSpan>[0]); _reConnectionManager.ConnectionRestored += () => { MessageBox.Show("Соединение восстановлено"); //StopDde(); StartDde(); }; Вот такая ошибка в студии выдается при выполнении this.Trader.StartDde "Окно с заголовком 'инструменты' не было найдено." Если квик не закрывать то дде стартуется стопится сколько угодно раз.

вот процедуры private void StartDde() { _isDdeStarted = true; this.Trader.StartDde(new[] {Trader.SecuritiesTable,Trader.OrdersTable,Trader.StopOrdersTable,Trader.MTradesTable}); }

   private void StopDde()
    {
        this.Trader.StopDde(new[] { Trader.SecuritiesTable,

Trader.OrdersTable, Trader.StopOrdersTable, Trader.MyTradesTable }); _isDdeStarted = false; }

Thanks:
1 2  >

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

loading
clippy