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


Всем привет! Возникла проблема.
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

Теги:


Спасибо:


1 2  >
Mikhail Sukhov

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


MenDel Перейти

StockSharp 4.2


Обновитесь.
Спасибо:

MenDel

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


Михаил Сухов Перейти
MenDel Перейти

StockSharp 4.2


Обновитесь.


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

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

Mikhail Sukhov

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


MenDel Перейти

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


http://stocksharp.com/posts/m/28490/
Спасибо:

MenDel

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


Михаил Сухов Перейти
MenDel Перейти

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


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


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

Mikhail Sukhov

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


MenDel Перейти

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


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

MenDel

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


Настройки:
_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.
Её надо дорабатывать.
Спасибо:

Mikhail Sukhov

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


MenDel Перейти

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


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

MenDel

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


Михаил Сухов Перейти
MenDel Перейти

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


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


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

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

Mikhail Sukhov

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


MenDel Перейти

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



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

MenDel

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


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

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

loading
clippy