Бесконечный Connect

Бесконечный Connect
Atom
11/28/2013
MenDel


Всем привет! Возникла проблема. trader.ProcessDataError выдает ошибку System.InvalidOperationException: Подключение к системе изменило свое состояние. Сообщение 'Disconnect,T=2013/11/28 16:28:24.568'. Текущее состояние клиента Connecting. И идет вечный Connecting. Подскажите, что делать в этой ситуации? Как отменить подключение? Пытался установить TimeOutInterval, но он помогает только если поставить 1-2 секунды. Если установлено другое значение, то событие TimeOut не срабатывает вообще. 2 секунды это маленький интервал, иногда ошибочно выдает TimeOut, хотя подключение установилось.

И еще вопросик trader.ProcessDataError постоянно выдает ошибку Не удалось привести тип объекта "System.Decimal" к типу "StockSharp.BusinessEntities.Quote". Ее можно как нибудь исправить, а то она эфир засоряет.

SmartCom 3.0.79 x64 StockSharp 4.2


Tags:


Thanks:


1 2  >
Mikhail Sukhov

Avatar
Date: 11/28/2013
Reply


MenDel: StockSharp 4.2

Обновитесь.

Thanks:

MenDel

Avatar
Date: 11/29/2013
Reply


Михаил Сухов:

MenDel: StockSharp 4.2

Обновитесь.

Обновился. Проблема осталась. Изменилось описание ошибки: "Подключение к системе изменило свое состояние. Текущее состояние клиента Connecting. Сообщение типа 'DisconnectMessage'."

Добавлю Терминал SmartTrade выдает ошибку Ваш терминал блокирован. Программа этого не понимает и происходит вечный коннект, ошибки нет.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/29/2013
Reply


MenDel: Изменилось описание ошибки: "Подключение к системе изменило свое состояние. Текущее состояние клиента Connecting. Сообщение типа 'DisconnectMessage'."

http://stocksharp.com/posts/m/28490/

Thanks:

MenDel

Avatar
Date: 11/29/2013
Reply


Михаил Сухов:

MenDel: Изменилось описание ошибки: "Подключение к системе изменило свое состояние. Текущее состояние клиента Connecting. Сообщение типа 'DisconnectMessage'."

http://stocksharp.com/posts/m/28490/

А как тогда вручную можно отменить Connecting? Потому что робот зависает и ничто не помогает.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/29/2013
Reply


MenDel: А как тогда вручную можно отменить Connecting? Потому что робот зависает и ничто не помогает.

Если это из-за робота, то нужно изменить робота. Если это из-за ReConnection настроек (вообще то там интервал 1 минута по умолчанию), то изменить их.

Thanks:

MenDel

Avatar
Date: 11/29/2013
Reply


Настройки: _trader.ReConnectionSettings.ConnectionSettings.TimeOutInterval = TimeSpan.FromSeconds(..); _trader.ReConnectionSettings.ConnectionSettings.AttemptCount = 0; _trader.ReConnectionSettings.ConnectionSettings.ReAttemptCount = 0;

  • При неправильном вводе сервера (возможно такая же ситуация возникнет когда их сервак отвалится, не проверял) Если TimeOutInterval = 22 сек, то все работает. Сработает ConnectionError и соединение переходит в состояние Failed. А вот если установить 23 и более, то соединение никогда не перейдет в Failed, оно так и останется в состоянии Connecting

  • Похожая ситуация возникает тогда, когда доступ к терминалу по какой либо причине блокирован Только время TimeOutInterval в этой ситуации идет меньше до 2 сек, и 3 и более сек соответственно

  • А вот если отключена сетевая карта, то ConnectionError срабатывает сразу же. Так как пишет проблема с лицензией.

  • Но вот если роутер отключится, то TimeOutInterval вообще должен быть равен 1 сек. Иначе он так и останется висеть в состоянии Connecting.

Вот проблема и заключается как раз в том, что TimeOutInterval не работает. Он не в состоянии разорвать соединение, для того, что бы можно было заново подключиться. Поэтому я и спрашиваю, есть ли возможность руками это сделать?

Кстати по поводу ReConnectа: Ваш я не использую, потому что может отключиться интернет, может отвалиться сервер, а робот так и останется пытаться через допустим каждые 30 сек переподключиться и не поймет в чем ваще причина. Приходиться запускать свой таймер Сначала стоит проверить хотя бы ping до гугла там, убедиться что интернет есть, потом сделать ping до сервера, и понять в чем проблема, в интернете, в сервере или в чем то еще. А потом уже либо пытаться подключиться, либо сменить сервер или что то еще сделать в зависимости от ситуации. Мое мнение, эта функция в вашей библиотеке бесполезна, по крайней мере по отношению к SmartCom. Её надо дорабатывать.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/29/2013
Reply


MenDel: Кстати по поводу ReConnectа: Ваш я не использую, потому что может отключиться интернет, может отвалиться сервер,

Тогда вопрос - причем тут S#? У вас свой собственный реконнект, и вы спрашиваете, как его остановить?[biggrin]

Thanks:

MenDel

Avatar
Date: 11/29/2013
Reply


Михаил Сухов:

MenDel: Кстати по поводу ReConnectа: Ваш я не использую, потому что может отключиться интернет, может отвалиться сервер,

Тогда вопрос - причем тут S#? У вас свой собственный реконнект, и вы спрашиваете, как его остановить?[biggrin]

Михаил, тут вопрос не про реконнект, а про коннект! Точнее про состояние Connecting! Еще раз напишу, трейдер остается в состоянии Connecting и не хочет переходить в другое состояние. И я не могу заново пробовать подключиться, так он мне выдает ошибку, что трейдер ужу в состоянии Connecting! Вот я и спрашиваю, как мне остановить это? Единственное что помогает это написать trader = null. И перезапускать робота. Но это глупо! Хотя приходится так делать, чтоб не пролететь. Но опять же для этого надо свой таймер делать, а вопрос зачем, если у вас есть события TimeOut и ConnectionError, но вот проблема они не всегда срабатывают.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/29/2013
Reply


MenDel: Михаил, тут вопрос не про реконнект, а про коннект! Точнее про состояние Connecting! Еще раз напишу, трейдер остается в состоянии Connecting и не хочет переходить в другое состояние. И я не могу заново пробовать подключиться, так он мне выдает ошибку, что трейдер ужу в состоянии Connecting!

Да, теперь понял о чем вы. Посмотрим, что там может быть.

Thanks: MenDel

MenDel

Avatar
Date: 11/29/2013
Reply


Просто сделайте, чтоб TimeOutInterval всегда срабатывал и разрывал соединение. Я думаю тогда будет все нормально.

Thanks:
1 2  >

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

loading
clippy