Marco
|
Дата: 10.10.2012
|
|
|
|
Спасибо:
|
|
|
|
|
|
Цифровой
|
Дата: 10.10.2012
Mikhail Sukhov:
- Можно сделать флаг для опционального убивания процесса СмартКом (что, кстати, возможно и сейчас, достаточно переопределить метод SmartTrader.OnConnect). На разрыв соединения это не повлияет, но первое подключение возможно станет быстрее и стабильнее.
Да, слона то в виде virtual я и не приметил...
Спасибо, буду тестить!
Вопрос сразу, не отходя от кассы.
Раз SmartCOM такой нестабильный, а я пока планирую связать с ним свои ближайшие торговые амбиции,
можно ли получить исходный код связанный именно со SmartCOM и SmartTrader с тем,
чтобы иметь лучшие возможности по поиску и исправлению ошибок?
Взамен могу предложить идеи по улучшению SmartTrader, если они конечно будут :-)
|
|
|
|
Спасибо:
|
|
|
|
|
|
Mikhail Sukhov
|
Дата: 11.10.2012
Цифровой:
Раз SmartCOM такой нестабильный, а я пока планирую связать с ним свои ближайшие торговые амбиции,
можно ли получить исходный код связанный именно со SmartCOM и SmartTrader с тем,
чтобы иметь лучшие возможности по поиску и исправлению ошибок?
Взамен могу предложить идеи по улучшению SmartTrader, если они конечно будут :-)
Был уже один помощник, который так же говорил про СмартКом. Получил исходники, и больше мы его не видели.
Так что теперь только через время и кодеплекс. Время покажет надежность, кодеплекс - навык.[wink]
|
|
|
|
Спасибо:
|
|
|
|
|
|
Цифровой
|
Дата: 11.10.2012
|
|
|
|
Спасибо:
|
|
|
|
|
|
dvoris
|
Дата: 06.12.2012
|
|
|
|
|
- Как минимум это не позволяет к нему подключиться из двух разных программ.
Например, если хочется возложить скачивание маркет-данных на Гидру, а торговать из другой используя тот же SmartCOM.
Не получится, т.к. при втором подключении к службе SmartCOM первое дисконнектится.
Кроме этого, некоторое время назад в АйТи что-то подкрутили, и изредка случаются дисконнекты, если во время работы (с другой машины) происходит подключение с этого же, либо даже с дополнительного (!) логина, зарегистрированного на одного клиента. Чёткой системы не уловил, техподдержка АйТи ничем не помогла. Возможно, борьба с мультиподключениями или настройки безопасности, а точнее некорректная их реализация. Благо, мне сейчас не критично, но вообще, конечно, нужно разбираться с этим.
Убийство процесса лучше оставить, хотя зависаний службы не припомню, это надо сильно постараться, производя какие-то нестандартные действия. Но можно и отключить рестарт службы (переопределением метода SmartTrader.Connect), если хочется сделать реконнект быстрым. А, по-хорошему, в SmartTrader можно бы распознавать зависание SmartCOM (предлагаю подумать как именно).
В остальном проблем с реконнектом не замечал, лично у меня он работоспособный на 99.5%. Конечно, с некоторыми костылями вроде переподписывания на события и т.д. Вообще, это рекомендованное разработчиками SmartCOM поведение - отписаться и подписаться снова (CancelTicks+ListenTicks,CancelBidAsk+ListenQuotes и т.д.) Так что, возможно, эти "костыли", которые и не костыли, стоит прописать в SmartTrader.
P.S. Михаил, а кому давали исходники? Я готов потратить время и оттюнить реконнект в SmartTrader, т.к. сам его использую и имею опыт с API SmartCom. Тут и другие заинтересованные есть, вроде бы. Не пойму зачем в позу вставать - "сам делать не буду и вам не дам". По-моему, все мы тут обеими руками за развитие S#.
Все - в смысле старожилы, конечно, а не все при/про-ходящие.
|
|
|
|
|
|
|
andy_baka_
|
Дата: 06.12.2012
Насколько я помню, это вполне возможно. Единственное, что для того, чтобы разрешить множественные подключения нужно звонить в АйТиИнвест и просить чтобы они сняли ограничение на количество конектов с одного адреса. По крайней мере, у меня работает два конекта и ничего не происходит - один SmartTrade, второй - из программы.
|
|
|
|
Спасибо:
|
|
|
|
|
|
dvoris
|
Дата: 06.12.2012
andy_baka_:
Насколько я помню, это вполне возможно. Единственное, что для того, чтобы разрешить множественные подключения нужно звонить в АйТиИнвест и просить чтобы они сняли ограничение на количество конектов с одного адреса. По крайней мере, у меня работает два конекта и ничего не происходит - один SmartTrade, второй - из программы.
Естественно, ограничение по айпи выключено у брокера, не в этом дело.
SmartTrade не использует службу SmartCOM и поэтому может одновременно работать с приложением, использующим SmartCOM.
Не смогут работать одновременно на одной машине именно два разных приложения, использующих SmartCOM.
Для этого у нас StockSharp, который подключается к SmartCOM один, а уже на StockSharp можно навешивать модули с логикой.
|
|
|
|
Спасибо:
|
|
|
|
|
|
Цифровой
|
Дата: 20.12.2012
|
|
|
|
|
Спасибо за ответы!
Сейчас уже могу сказать, что есть ограничения на подключения.
Т.е. даже если со второго компьютера пытаешься коннектиться с одним логином, то на первом коннект пропадает.
Чтобы обойти это ограничение можно привязать к своей учетке еще один логин (вопрос без проблем решается через тех.поддержку).
По поводу использования SmartCom в двух программах на одном компьютере - у меня так и не заработало (по крайней мере со StockSharp)
и от концепции Hydra + "Программа Анализатор Регистратор Сделок" я отказался, так что у меня сейчас All-In-One пока со StockSharp.
Проблема в том, как верно заметил dvoris, что SmartTrader от StockSharp действительно отпадает раза 3 в день.
Идея, что это связано с подключением по второму логину - интересная, можно попробовать.
Может быть проблемы с настройками переподключения.
В документации сказано, что SmartCom дисконнектится после ожидания ответа на запрос в течение 2 секунд (можно увеличить).
Может быть стоит увеличить таймаут. Может быть неправильно настроены попытки переподлючения или оно невключено.
Начал баловаться непосредственно со SmartCom, т.е. писать свою обертку.
С подключением заметил такую проблему:
если на SmartCom вызвать Connect в программе, а потом эта программа завершится (например, аварийно),
то коннекция выживет и не даст законнектится снова при повторном запуске программы (какая-то ошибка сокета).
Но можно каждый раз при запуске программы пытаться делать Disconnect. Тогда коннекция-труп умрет и можно будет сделать новый Connect.
Есть предположение, что тогда не придется убивать процесс SmartCom.
|
|
|
|
Спасибо:
|
|
|
|
|
|
Mikhail Sukhov
|
Дата: 20.12.2012
Цифровой:
и от концепции Hydra + "Программа Анализатор Регистратор Сделок" я отказался, так что у меня сейчас All-In-One пока со StockSharp.
Вот именно поэтому и я решил организовать проект http://stocksharp.com/forum/3166/RoutingServer/
СмартКом по идее сам является таким вот роутером, но почему-то в него не заложена изначально функциональность множества одновременных подключений. Плюс подвисшие коннекты от одного робота не дают возможность подключаться другому.
В свое время ИТ инвест уже убивал смартком, и инициировал новый АПИ. Даже как-то присылал нам описание. Но время прошло, а его так и нет, и судя по всему даже никто толком и не использовал. Мое мнение такое, что сейчас уже смысла нет что либо писать под смартком. Они наконец-то выпустили СмартИкс и надеюсь теперь дойдут руки до переделок АПИ. Лучше конечно убить СмартКом напрочь, чем мучать и себя и юзеров.
|
|
|
|
Спасибо:
|
|
|
|
|
|
Aleksey24
|
Дата: 11.03.2013
|
|
|
|
|
Периодически вылетает ошибка при подключении, может кто подскажет в чем проблема
Происходит следующее:
Все запускаю от Админестратора.
Установлена SmartCOM 2.2.116.1020 от 14.02.2012
Экспериментировал с подключением библиотек S# (версия 4.1.5, версия 4.1.8, сборка 23281)
Служба SmartCom2 отключена (тип запуска - вручную). В столбце (тип запуска) - пусто.
Сначала запускаю TestConnect_2_2 с сайта ITinvest.
1. Клик "Create" запускает службу SmartCom2.
2. Клик "Connect" Connected со SmartCom. При этом (с постоянно запущенной службой SmartCom2) нажимая "Disconnect" и "Connect" по очереди много раз не создается никаких ошибок.
3. В итоге отключаю TestConnect_2_2, но оставляю службу SmartCom2 запущенной. Запускаю SampelSmartCandels (пример от S#) -> появляется ошибка
***System.ComponentModel.Win32Exception (0x80004005): Отказано в доступе
в System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
в System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
в System.Diagnostics.Process.Kill()
в StockSharp.Smart.SmartTrader.KillSmartComProcess()
в StockSharp.Smart.SmartTrader.OnConnect()***
после клика на ОК кнопка Export разблокируется и приходят инструменты и т.д.
4. Закрыв приложение SampelSmartCandels и запустив его заново -> выскакивает та же самая ошибка, но уже без подключения, без экспорта.. Служба SmartCom2 включена.
5. Запуская приложение SampelSmartCandels постоянно возникает ошибка, и появление экспорта происходит циклично через подключение.
6. Если отключить службу SmartCom2 и запустить приложение SampelSmartCandels -> запускается без сбоев первый раз, после закрытия приложения служба SmartCom2 остается запущенной. И соответственно при запуске приложения снова появляется ошибка. После этого (с запущенной службой SmartCom2) TestConnect_2_2 запускается и работает без ошибок.
Буду искать дальше ошибку, но все таки было бы хорошо если кто то поборол такую ошибку и тут чирканул решение
НАШЕЛ ПРИЧИНУ, может кому поможет в дальнейшем:
При повторном запуске от Админа примера SampleSmartCandles появлялась ошибка 800400...15 (точный номер уже непомню).
Причина ошибки в установке .NET Framework 4 и 4.5. Устанавливаются в первый раз на комп. нормально без ошибок (что и сбивает с толку [confused] ). После обновления NET Framework через центр обновлений Windows все ошибки исчезли. Все запускается и работает!!!! [biggrin]
|
|
|
|
|
|