SmartCOM 3.0
Atom Ответить
17.05.2013


Говорят уже вышел. Кто с ним работал? Хочется понять его стабильность, и, если все окей, перевести и наш коннектор. Тем более там наконец-то появилось 64-ех битность (всего-то 6 лет назад последние 32-ух битные компьютеры с прилавков исчезлиBigGrin).

Теги:


Спасибо:




45 Ответов
1 2  >
gramp

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


Очень стабилен, реконнекты очень редки и не каждый день. Просто dll, без .exe. Позволяет запускать множество экземпляров на одном компьютере. Отличий от 2.2 - совсем немного - какие-то параметры убраны и добавлены в некоторых методах и событиях.
Проблема пока только одна - при реконнекте или при ручной остановке скрипта после обнуления объекта StServerClass через =null и создания нового экземпляра объекта через несколько минут тихо умирает. Поэтому при любой остановке приходится закрывать приложение и открывать заново - тогда никаких проблем, все работает стабильно. Хотя, может быть, помимо =null нужно еще что-то делать для корректного обнуления объекта StServerClass? Буду благодарен за совет.
И иногда событие OrderSuccseeded приходит на несколько секунд позднее, поэтому использовать его в основной логике нежелательно.
На 2.2 торговать не пробовал, но, судя по массе гневных отзывов о постоянных реконнектах 2.2 и танцах с бубном для перезапуска службы - на 3.0 этой проблемы не существует.
Время отклика сервера, как и на 2.2, пока не очень быстро - 50-70мс., но через месяц обещают ускорить.
В целом работает отлично!
Спасибо:

MenDel

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


Когда будем переходить на SmartCOM 3.0?
Спасибо:

MenDel

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


Что надо изменить в коде, чтоб законнектиться через SmartCOM 3.0, если на компе стоят обе версии?
Если у меня 64 битная винда, то лучше поставить 64 битный смартком или же 32?
Есть ли какие нибудь отличительные особенности по работе с ним или же все тоже самое?
Спасибо:

Mikhail Sukhov

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


Начиная с версии S# 4.1.5, нами поддерживается SmartCOM 3.X. Поддерживает оба режима, 32 и 64 бит. Для того, чтобы робот, написанный на S# начал работать с новой версией, необходимо написать код как показано в документации:

Код
// подключение будет производиться через SmartCOM 3
// (в зависимости от разрядности процесса будет выбран автоматически SmartCom3Wrapper32 или SmartCom3Wrapper64)
smartTrader.ApplyWrapper(SmartComVersions.V3);
Автор топика
Спасибо: MenDel

MenDel

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


Подскажите, как правильно настроить смартком.
Я удалил 2 версию, установил 3-ю 64bit вот от сюда
Но в диспетчере задач, в службах я вижу только вторую версию хотя она удалена.

И правильно ли дописан код?

Код
SmartTrader _trader = new SmartTrader
            {
                Login = "",
                Password = "",
                Address = "194.247.135.144:8090".To<IPEndPoint>()
            };
 _trader.ApplyWrapper(SmartComVersions.V3);
 _trader.Connect();
Спасибо:

Mikhail Sukhov

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


MenDel Перейти
И правильно ли дописан код?


Вы зачем в сообщение пароль к счету вставляете?

Я просто поставил поверх смартком 64 бита. Попробуйте пример SampleSmart. Там галку нужно выставить v3. Если и он не будет подключаться, то значит что-то не так на компьютере с установкой СмартКом. Просто все удалите и заново установите 3-ю. Но, повторюсь, у меня нормально и 2-ка и 3-ка сосуществуют.
Автор топика
Спасибо:

MenDel

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


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

Вы зачем в сообщение пароль к счету вставляете?


Ну это все равно ж демка.
А в целом код правильно написан?
Или надо как то по другому писать?
Потому, что я смотрю можно еще так коннект делать _trader.Wrapper.Connect("194.247.135.144", 8090, "", "");

И в каком месте прописывать _trader.Wrapper = new SmartCom3Wrapper64();?

Я просто немного запутался.
Спасибо:

Mikhail Sukhov

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


MenDel Перейти
Я просто немного запутался.


Запустите SampleSmart и проверьте подключение через 3-ий смартком.
Автор топика
Спасибо:

MenDel

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


Михаил Сухов Перейти
Запустите SampleSmart и проверьте подключение через 3-ий смартком.


32 битный запускается, а
64 битный кидает ошибку
Спасибо:

Mikhail Sukhov

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


MenDel Перейти
Михаил Сухов Перейти
Запустите SampleSmart и проверьте подключение через 3-ий смартком.


32 битный запускается, а
64 битный кидает ошибку


А в какой последовательности они устанавливались?
Автор топика
Спасибо:

MenDel

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


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

А в какой последовательности они устанавливались?


Я х32 и х64 одновременно не ставил.
На 2 смартком поставил 3 х64, ошибка.
Потом все стер, перезагрузил, поставил опять 2, на него 3 х32, запустилось.
Потом опять все стер, перезагрузил, поставил 2, на него 3 х64, ошибка.
Спасибо:

Mikhail Sukhov

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


MenDel Перейти

Потом опять все стер, перезагрузил, поставил 2, на него 3 х64, ошибка.


А если просто 3 x64? Компьютер 64 битный?
Автор топика
Спасибо:

alexan3010

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


Опишу свой вариант этой проблемы:
Запускаюсь на Win7, 64 bit, 16 Gb памяти (под vmWare ESXi если важно).

Версия S# сегодня качал 4.1.19.1
Смартком так же сегодня качал и 2.2ой и 3ий. После каждого удаления - перегружался.

Варианты:
1) S#.Studio в режиме 64 бит и SmartCom 3.0 64 бит - все работает отлично.
2) API и SmartCom 3.0 64 бит, запускаю SampleSmart с галкой V3 - ошибка, как у товарища описано вверху.
3) API и SmartCom 3.0 32 бит, запускаю SampleSmart с галкой V3 - ругается что не нашел SmartCom2, но ЗАПУСКАЕТСЯ и работает!
При этом S#.Studio работает тоже нормально в 32 битном режиме.
4) Дальше тупо поставил SmartCom 2.2 не снося 3.0 32 бита - API SampleSmart работает с галкой V3 и не ругается (потому что видит сервис SmartCom2).

Похоже на небольшой косяк.
Спасибо:

Mikhail Sukhov

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


Вы можете привести текст ошибок?
Автор топика
Спасибо:

alexan3010

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


Ошибка при варианте 3) следующая:
SystemInvalidOperationExeption: Не удалось запустить службу SmartCom2 на компьютере '.' -->
SystemComponentModel.Win32Exeption: Не удается найти указанный файл

Но при этом все работает (на SmartCom3, он то есть, вторая версия и не нужна).

Так же у меня еще следующие соображения. Я использую Visual Studio 2010 Express и как я вычитал (на википедии),
по умолчанию он компилирует только в 32bit приложения. Это скорее всего объясняет пункты 1) и 2) моих ошибок -
Studio у меня заведомо 64 и оно работает нормально, а то приложение, которое я компилирую - 32 бита, поэтому
оно будет работать только с 32bit SmartCom.

А с пунктом 3 похоже все таки что то не то. Такое ощущение, что забыли где то убрать обращение ко второму SmartCom
при явном обращении к V3. Но если стоят оба - то все как бы и нормально - проверил что есть вторая - ОК, а работает
через третий.

Такие вот мысли.
Спасибо:

Mikhail Sukhov

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


Приведите полный стек-трейс ошибки.
Автор топика
Спасибо:

alexan3010

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


А подскажите, как бы стек-трейс по проще сюда скопировать? Не могу сказать что я крупный программист на .net.
Спасибо:

Mikhail Sukhov

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


alexan3010 Перейти
А подскажите, как бы стек-трейс по проще сюда скопировать? Не могу сказать что я крупный программист на .net.


Просто вставьте как текст.
Автор топика
Спасибо:

alexan3010

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


Так там MessageBox "Ошибка обработки данных" - он не предусматривает копирование текста из себя. Первые две строчки я вам переписал.
Дальше идет еще четыре строки после - Конец трассировки внутреннего стека исключений -
Спасибо:

Mikhail Sukhov

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


alexan3010 Перейти

3) API и SmartCom 3.0 32 бит, запускаю SampleSmart с галкой V3 - ругается что не нашел SmartCom2, но ЗАПУСКАЕТСЯ и работает!
При этом S#.Studio работает тоже нормально в 32 битном режиме.


SampleSmart (он по умолчанию скомпилирован под 32 бита) - ошибка не наблюдается.
Автор топика
Спасибо:

vk37

Фотография
Курсы
Дата: 07.11.2013
Ответить


Поставил финальный (не бета) смартком 3.0.66 x64 от 17.09.2013 на Windows 8 x64
Смарткомы предыдущих версий удалил.
Скомпилировал SampleSmart версии 4.1.19.1 под x64.
Запускаю в дебаг режиме с галочкой SmartCom3.
После Trader.Connect() в обработчике события Trader.ProcessDataError ошибка:
Код
System.InvalidOperationException: Cannot open SmartCom2 service on computer '.'. ---> System.ComponentModel.Win32Exception: Access is denied
   --- End of inner exception stack trace ---
   at System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess)
   at System.ServiceProcess.ServiceController.Start(String[] args)
   at StockSharp.Smart.SmartTrader.RestartSmartComService()
   at StockSharp.Smart.SmartTrader.OnConnect()

И в обработчике события Trader.ConnectionError ошибка без стэк трейса:
Код
System.InvalidOperationException: Responce parse failed
Спасибо:

Mikhail Sukhov

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


Судя по всему SmartTrader.Wrapper установлен как SmartCom2Wrapper, а нужно SmartCom3Wrapper64
Автор топика
Спасибо:

vk37

Фотография
Курсы
Дата: 08.11.2013
Ответить


Если проинициализировать трейдер так:
Код
				    Trader = new SmartTrader()
				    {
				        Wrapper = new SmartCom3Wrapper64(),
				    };
то результат тот же
Спасибо:

Mikhail Sukhov

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


А метод ApplyWrapper закомментировали?
Автор топика
Спасибо:

Mikhail Sukhov

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


Михаил Сухов Перейти
А метод ApplyWrapper закомментировали?


Ошибку эту уже правили. Как выложим новую версию, то она уйдет. Смысл - там всегда просится перезапуск роутера, с неважно каким раппером. Нужно в примере SmartTrader.RestartService = false;
Автор топика
Спасибо:
1 2  >

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

loading
clippy