← Zurück

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (15)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

MenDel: StockSharp 4.2

Обновитесь.

MenDel
MenDel Autor

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

MenDel: StockSharp 4.2

Обновитесь.

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

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

Mikhail Sukhov
Mikhail Sukhov

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

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

MenDel
MenDel Autor

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

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

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

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

Mikhail Sukhov
Mikhail Sukhov

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

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

MenDel
MenDel Autor

Настройки: _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
Mikhail Sukhov

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

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

MenDel
MenDel Autor

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

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

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

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

Mikhail Sukhov
Mikhail Sukhov

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

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

Mikhail Sukhov
Mikhail Sukhov

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

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

MenDel
MenDel Autor

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

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

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

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

Mikhail Sukhov
Mikhail Sukhov

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

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

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

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

MenDel
MenDel Autor

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

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

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

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

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

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

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

Mikhail Sukhov
Mikhail Sukhov

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

MenDel
MenDel Autor

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