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

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


S#1.8.

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

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



Теги:


Спасибо:


1 2  >
Mikhail Sukhov

Фотография
Дата: 20.04.2010
Ответить


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

Спасибо:

Ilya Usenko

Фотография
Дата: 20.04.2010
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 20.04.2010
Ответить


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

Спасибо:

Ilya Usenko

Фотография
Дата: 21.04.2010
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 21.04.2010
Ответить


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

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

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

Спасибо:

Ilya Usenko

Фотография
Дата: 22.04.2010
Ответить


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

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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 22.04.2010
Ответить


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

Спасибо:

Ilya Usenko

Фотография
Дата: 23.04.2010
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 27.04.2010
Ответить


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

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

Спасибо:

Garry

Фотография
Дата: 02.05.2010
Ответить


А почему не получается запустить 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;
}

Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy