Alexander
|
Date: 3/16/2012
smartcom и samplesmartsma от одного юзера запущен, от админа? версию S# тоже указывайте
|
|
Thanks:
|
|
|
|
|
AlexBuzaev
|
Date: 3/16/2012
Точно, спасибо Надо запускать от админитсратора
|
|
Thanks:
|
|
|
|
|
kingdom2
|
Date: 10/8/2012
Добавьте пожалуйста в доку, что Гидру тоже для smartcom надо из под админа пускать.
|
|
Thanks:
|
|
|
|
|
Цифровой
|
Date: 10/9/2012
|
|
|
|
Думал написать в отдельную тему, но раз уж эта "всплыла".
Меня интересует вопрос, зачем вообще нужно убивать процесс SmartCOM? Негативные последствия от этого предположительно такие:
1. Как минимум это не позволяет к нему подключиться из двух разных программ. Например, если хочется возложить скачивание маркет-данных на Гидру, а торговать из другой используя тот же SmartCOM.
2. У меня есть нехороший эффект: если в Гидре сначала нажать Старт, потом Стоп, а затем снова Старт при включенном источнике Smart, то второй раз Старт отвалится по таймауту. Есть предположение, что это связано как раз с убийством SmartCOM во втором Старте.
Вопрос - какая польза? Ведь она же должна быть :-)
Параметры запуска: - Гидра, скомпилированная под x86 - Запуск с правами администратора - Windows 8 Release Preview x64, Windows 7 Ultimate x64
Есть также тест на C#, написанный на основе консольного примера для Smart вида: new SmartTrader, Connect, StartExport, Dispose, new SmartTrader, Connect... Скомпилирован под x86. На втором коннекте либо крэш от отсутствия прав, если VisualStudio запущена не под админом, либо бесконечное ожидание успешного коннекта.
|
|
Thanks:
|
|
|
|
|
Marco
|
Date: 10/10/2012
|
|
|
|
Поддержу вопрос. Не знаю, связано ли это с убийством процесса SmartCOM, но определенно с реализацией подключения и переподключения в SmartTrader есть проблемы. Я тоже набросал тест, который умеет подключаться/отключаться, и содержит настройки переподключения при обрыве связи. При тестировании имеем:
- После запуска тест подключается к шлюзу и получает сделки.
- При отключении вручную и последующем подключении вручную (Disconnect()/Connect()), получение сделок успешно возобновляется.
- При физическом отключении от сети и последующем физическом подключении SmartTrader переподключение выполняет, но получение сделок НЕ возобновляется. (В обработчике события Connected я переподписываюсь на сделки и перезапускаю экспорт.) Вообще при переподключении происходят странные вещи. Например событие Disconnected вызывается с большой задержкой либо вообще не вызывается. При этом Disconnected и Connected могут вызываться несколько раз, в процессе может возникнуть исключение "Программа выполнила недопустимую операцию и будет закрыта" и т.д.
- При перезапуске сервиса SmartCOM в процессе работы теста, просто перестают вызываться все обработчики событий. Никаких попыток восстановить соединение не предпринимается.
Настройки переподключения у меня такие: Code
// настраиваем переподключение при обрыве связи для SmartCom
trader.ReConnectionSettings.ReConnectingAttemptCount = -1;
trader.ReConnectionSettings.ConnectingAttemptCount = -1;
trader.ReConnectionSettings.IsReStartExport = false; // true - тоже пробовал.
trader.ReConnectionSettings.ExportTimeOutInterval = TimeSpan.FromSeconds(30);
trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;
trader.ReConnectionSettings.ConnectionRestored += () =>
{
Console.WriteLine("Соединение восстановлено.");
};
Собственно вопросы такие:
- Есть ли возможность заставить SmartTrader/SmartCOM стабильно переподключаться при проблемах с каналом связи? Если проблема в моем коде, я готов оплатить техподдержку.
- Если проблемы в SmartTrader, и у уважаемых авторов библиотеки нет времени/желания/возможности их исправлять, могу ли я получить доступ к проекту SmartTrader, чтобы внести необходимые исправления?
- Или посоветуете забить на SmartCOM и перейти на Plaza?
P.S.: Тестовый проект - в аттаче. Там нужно поменять константы логина-пароля-портфеля. Прописан адрес основного сервера ITInvest. Если будете использовать тестовую систему - адрес нужно поменять.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/10/2012
Убивание процесса было сделано потому, что если он зависнет (а такое было в 2010, когда я через него торговал, сейчас возможно это не актуально), то к нему уже никак не переключиться.
Реконнект сейчас работает не очень стабильно. В планах его его переделать, но пока это далекие планы, так как нужно малому количеству юзеров. На Квике в последнее время тьфу-тьфу вроде все работает нормально, на Плазе так же, а это основная масса роботостроителей.
Что можно сделать сейчас.
1) Можно сделать флаг для опционального убивания процесса СмартКом (что, кстати, возможно и сейчас, достаточно переопределить метод SmartTrader.OnConnect). На разрыв соединения это не повлияет, но первое подключение возможно станет быстрее и стабильнее. 2) Можете оплатить доработку для экстренного фикса самостоятельно, или с кем-то, кому еще она нужна.
|
|
|
|
|
Marco
|
Date: 10/10/2012
Михаил, спасибо за комментарий.
А сколько будет стоить фикс реконнекта для SmartTrader?
Хотя предположу, что стратегически более правильно будет свалить на плазу.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/10/2012
Marco Михаил, спасибо за комментарий.
А сколько будет стоить фикс реконнекта для SmartTrader?
Хотя предположу, что стратегически более правильно будет свалить на плазу. 5-10... Не смотрел точно, как можно переделать. Просто видел в коде явные ошибки. Переподключения писалось очень давно, и тогда было другое мировоззрение на работу с потоками. Плаза - это хорошо, но только для ФОРТС.
|
|
Thanks:
|
|
|
|
|
Marco
|
Date: 10/10/2012
Михаил, спасибо. Цена сравнима со стоимостью подключения к плазе. Я подумаю.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/10/2012
Marco Михаил, спасибо. Цена сравнима со стоимостью подключения к плазе. Я подумаю. Подключайтесь через СтокШарп http://stocksharp.com/broker/ Бесплатное подключение к Плазе.[biggrin]
|
|
Thanks:
|
|
|
|