Marco
|
Дата: 10.10.2012
Вы умеете вести переговоры. (c) [biggrin]
|
|
Спасибо:
|
|
|
|
|
Цифровой
|
Дата: 10.10.2012
Mikhail Sukhov 1) Можно сделать флаг для опционального убивания процесса СмартКом (что, кстати, возможно и сейчас, достаточно переопределить метод SmartTrader.OnConnect). На разрыв соединения это не повлияет, но первое подключение возможно станет быстрее и стабильнее.
Да, слона то в виде virtual я и не приметил... Спасибо, буду тестить! Вопрос сразу, не отходя от кассы. Раз SmartCOM такой нестабильный, а я пока планирую связать с ним свои ближайшие торговые амбиции, можно ли получить исходный код связанный именно со SmartCOM и SmartTrader с тем, чтобы иметь лучшие возможности по поиску и исправлению ошибок? Взамен могу предложить идеи по улучшению SmartTrader, если они конечно будут :-)
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 11.10.2012
Цифровой Раз SmartCOM такой нестабильный, а я пока планирую связать с ним свои ближайшие торговые амбиции, можно ли получить исходный код связанный именно со SmartCOM и SmartTrader с тем, чтобы иметь лучшие возможности по поиску и исправлению ошибок? Взамен могу предложить идеи по улучшению SmartTrader, если они конечно будут :-)
Был уже один помощник, который так же говорил про СмартКом. Получил исходники, и больше мы его не видели. Так что теперь только через время и кодеплекс. Время покажет надежность, кодеплекс - навык.[wink]
|
|
Спасибо:
|
|
|
|
|
Цифровой
|
Дата: 11.10.2012
Мудро
|
|
Спасибо:
|
|
|
|
|
dvoris
|
Дата: 06.12.2012
|
|
|
|
Цитата:1. Как минимум это не позволяет к нему подключиться из двух разных программ. Например, если хочется возложить скачивание маркет-данных на Гидру, а торговать из другой используя тот же 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
|
|
|
|
Спасибо за ответы!
1. Сейчас уже могу сказать, что есть ограничения на подключения. Т.е. даже если со второго компьютера пытаешься коннектиться с одним логином, то на первом коннект пропадает. Чтобы обойти это ограничение можно привязать к своей учетке еще один логин (вопрос без проблем решается через тех.поддержку).
2. По поводу использования SmartCom в двух программах на одном компьютере - у меня так и не заработало (по крайней мере со StockSharp) и от концепции Hydra + "Программа Анализатор Регистратор Сделок" я отказался, так что у меня сейчас All-In-One пока со StockSharp.
3. Проблема в том, как верно заметил dvoris, что SmartTrader от StockSharp действительно отпадает раза 3 в день. Идея, что это связано с подключением по второму логину - интересная, можно попробовать. Может быть проблемы с настройками переподключения. В документации сказано, что SmartCom дисконнектится после ожидания ответа на запрос в течение 2 секунд (можно увеличить). Может быть стоит увеличить таймаут. Может быть неправильно настроены попытки переподлючения или оно невключено.
4. Начал баловаться непосредственно со 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]
|
|
|
|