Бесконечный 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

Теги:


Спасибо:




15 Ответов
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'."


https://stocksharp.ru/posts/m/28490/
Спасибо:

MenDel

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


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

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


https://stocksharp.ru/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 всегда срабатывал и разрывал соединение.
Я думаю тогда будет все нормально.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.11.2013
Ответить


MenDel Перейти

Приходиться запускать свой таймер
Сначала стоит проверить хотя бы ping до гугла там, убедиться что интернет есть,
потом сделать ping до сервера, и понять в чем проблема, в интернете, в сервере или в чем то еще.
А потом уже либо пытаться подключиться, либо сменить сервер или что то еще сделать в зависимости от ситуации.


А почему просто не сменить сервер? Хорошо, допустим проблема в интернете, а не сервере. Прогнать по кругу все адреса серверов. Если ни с чем не подключилось, подождать. Что интернет, что сервер брокера - вы ни то ни другое не знаете когда починял, и для вас это одна единая переменная с неопределенным значением. Помоему и действие на эти две схожие ситуации должно быть одно и то же. Или у вас робот пытается починить интернет сам?
Спасибо:

MenDel

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


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

Приходиться запускать свой таймер
Сначала стоит проверить хотя бы ping до гугла там, убедиться что интернет есть,
потом сделать ping до сервера, и понять в чем проблема, в интернете, в сервере или в чем то еще.
А потом уже либо пытаться подключиться, либо сменить сервер или что то еще сделать в зависимости от ситуации.


А почему просто не сменить сервер? Хорошо, допустим проблема в интернете, а не сервере. Прогнать по кругу все адреса серверов. Если ни с чем не подключилось, подождать. Что интернет, что сервер брокера - вы ни то ни другое не знаете когда починял, и для вас это одна единая переменная с неопределенным значением. Помоему и действие на эти две схожие ситуации должно быть одно и то же. Или у вас робот пытается починить интернет сам?


Ну во первых у меня робот смски посылает. Если инет отключили он мне пришлет смс "Нет интернета", а если с сервером проблема напишет "Проблема на сервере"
Во вторых я планирую обьяснить ему как резервный интернет подключать.
Так что мне надо знать в чем проблема.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 30.11.2013
Ответить


MenDel Перейти

Ну во первых у меня робот смски посылает. Если инет отключили он мне пришлет смс "Нет интернета", а если с сервером проблема напишет "Проблема на сервере"
Во вторых я планирую обьяснить ему как резервный интернет подключать.
Так что мне надо знать в чем проблема.


Вот я и говорю - подключиться к серверу 1. Подключиться к серверу 2. Переключиться на канал 2. Проделать заново подключение с серверами.

Я не знаю, конечно, как у вас в городе, но довольно часто проблема с интернетом в Москве такая, что часть адресов работает, а часть нет. Если конечно проблема не врутри подъезда.

Смс, резервный канал. А случаем это не дороже будет аренды виртуального сервера у АйТи? У меня в памяти отложилось, что там что-то порядка 3 т.р. в месяц. Надо у брокера конечно спросить.
Спасибо:

MenDel

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


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

Вот я и говорю - подключиться к серверу 1. Подключиться к серверу 2. Переключиться на канал 2. Проделать заново подключение с серверами.


Вот я прошу вас решить проблему, которую я описал выше.
Иначе не получается переключиться на другой канал.

А про реконнект, это я так к слову написал.
Вы же улучшаете всегда свое творение, может когда нибудь и реконнект для SmartCom улучшите.

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

Я не знаю, конечно, как у вас в городе, но довольно часто проблема с интернетом в Москве такая, что часть адресов работает, а часть нет. Если конечно проблема не врутри подъезда.


У нас такого не бывает, если интернет отключат, то ко всем сайтам доступа не будет.

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

Смс, резервный канал. А случаем это не дороже будет аренды виртуального сервера у АйТи? У меня в памяти отложилось, что там что-то порядка 3 т.р. в месяц. Надо у брокера конечно спросить.


Что то я никогда не думал про виртуальный сервер.
А смс и резервный интернет мне обходится всего в 150 руб в месяц.
3G модем от Билайна и не помню уже какая то там подключенная услуга.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.12.2013
Ответить


Как станет понятна причина вот этой ошибки https://stocksharp.ru/posts/m/28563/ то сразу выложим фикс по реконнекту.
Спасибо:


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

loading
clippy