Описание процесса подключения к СмартКом
Smartcom - Интерфейс программирования для доступа на российский фондовый рынок. Разработан брокером It Invest. Из бесплатных платформ для доступа на ММВБ является самым быстрым решением. В 10 - 50 раз быстрее Quik.
Описание на сайте брокера: SmartCom
Первое. Подключаем дистрибутивы
Для того чтобы подсоединиться к торгам, необходимо установить дистрибутивы SmartCom. Они находятся рядом с инструкцией. Файл: SmartCOM_Setup_3.0.146.msi
Далее, в главном окне платформы жмём "Сервер" и выбираем в качестве платформы для подключения SmartCom.
Для того чтобы запустить сервер SmartCom надо настроить:
1.Адрес и порт сервера. Их можно взять из терминала СмартХ, из окна соединения, которое появляется сразу после загрузки.
2.Надо ввести Пароль и имя пользователя для доступа в систему.
3.Нажать кнопку "Подключить".
Заказать тестовые ключи доступа можно на странице: It Invest Внизу находиться соответствующее поле.
Добрый день!
Есть вопросы:
1. Чем драйвера для Смарткома, лежащие в дистрибутиве, лучше, чем с сайта самого АйТиИнвеста? Там они вроде по-новее будут...
2. Скольки разрядная ваша программа? Если можно скачать драйвера с АйТиИнвеста, то какую версию выбрать (32 или 64 бит)?
И еще вопрос. Для ТСЛаба мне АйТиИнвест создал как бы дополнительный счет. Деньги те же, но пароль и логин разные. Для этой программы такое нужно?
Цитата: Кот Матроскин
Добрый день!
Есть вопросы:
1. Чем драйвера для Смарткома, лежащие в дистрибутиве, лучше, чем с сайта самого АйТиИнвеста? Там они вроде по-новее будут...
2. Скольки разрядная ваша программа? Если можно скачать драйвера с АйТиИнвеста, то какую версию выбрать (32 или 64 бит)?
1. Попробуйте новые. Но может глючить, т.к. делалось на старых
2. 32
Цитата: Кот Матроскиннет. не нужно
И еще вопрос. Для ТСЛаба мне АйТиИнвест создал как бы дополнительный счет. Деньги те же, но пароль и логин разные. Для этой программы такое нужно?
Цитата: Алексей Ван
1. Попробуйте новые. Но может глючить, т.к. делалось на старых 2. 32
Спасибо!
Добрый день!
Поставил Смартком из дистрибутива. При запуске программы выбираю Робот, и пытаюсь подключить сервер Смарткома для робота. И получаю:
15.01.2017 19:16:57
Error
System.IO.FileNotFoundException: Не удалось получить фабрику класса COM для компонента с CLSID {99F5EA2E-0636-49BE-8100-8AE309B03331} из-за следующей ошибки: 8007007e Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E).
в OsEngine.Market.Servers.SmartCom.SmartComServer.CreateNewServerSmartCom() в D:\Dist\OSA\OsEngine_v0.9.2_Beta\Проект\OsEngine\Market\Servers\SmartCom\SmartComServer.cs:строка 355
в OsEngine.Market.Servers.SmartCom.SmartComServer.PrimeThreadArea() в D:\Dist\OSA\OsEngine_v0.9.2_Beta\Проект\OsEngine\Market\Servers\SmartCom\SmartComServer.cs:строка 252
Как лечить?
Не сталкивался с такой проблемой.
Как лечить?
Но абсолютно точно в систему СмартКом не установился или установлен криво. Попробуйте переустановить.
Цитата: Алексей Ван
Не сталкивался с такой проблемой. Но абсолютно точно в систему СмартКом не установился или установлен криво. Попробуйте переустановить.
1. Абсолютно точно, что Смартком, во-первых, установился, а во-вторых, установился не криво, т.к. ТСЛаб на нем нормально работает
2. Переустановил пару раз Смартком из дистрибутива, напоследок даже с сайта АйТиИнвест скачал Смартком - без толку, не работает, та же ошибка вылезает
Странно, ни в дистрибутиве с ОСА.НЕТ, ни на компьютере не нашел SmartCom.dll... Где его взять то?
SmartComApi - это SmartCOM_Setup_3.0.146.msi?
Смог смоделировать. Если удалить SmartCom.dll что рядом с экзешником или потерять на него ссылку, то возникает такая ошибка. Возьмите чистый билд, и загрузитесь из него. Ничего рядом с экзешником удалять не нужно, референсы тоже менять не стоит. Также необходимо установить SmartComApi из дистрибудива.
Странно, ни в дистрибутиве с ОСА.НЕТ, ни на компьютере не нашел SmartCom.dll... Где его взять то?
SmartComApi - это SmartCOM_Setup_3.0.146.msi?
Цитата: Кот Матроскин
Странно, ни в дистрибутиве с ОСА.НЕТ, ни на компьютере не нашел SmartCom.dll... Где его взять то?
SmartComApi - это SmartCOM_Setup_3.0.146.msi?
этот файл лежит рядом с экзешником. OsEngine/bin/Debag/ Вот здесь.
Странно, ничего не делал, только раскрыл ссылки, и все ошибка прекратилась... Указанные файлы не удалял и не добавлял...
Добрый день. Торгую в реале, пока вылезли две проблемы:
1. Постоянно вылазит ошибка:
в OsEngine.Market.Connector.ConnectorBot_NewTradeEvent(List`1 tradesList) в D:\Dist\OSA\OsEngine_v0.9.3_Beta\Проект\OsEngine\Market\Connector.cs:строка 738
30.01.2017 16:47:18_Error_System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в OsEngine.OsTrader.Panels.Tab.BotTabSimple._connector_TickChangeEvent(List`1 trades) в D:\Dist\OSA\OsEngine_v0.9.3_Beta\Проект\OsEngine\OsTrader\Panels\Tab\BotTabSimple.cs:строка 3293
в OsEngine.Market.Connector.ConnectorBot_NewTradeEvent(List`1 tradesList) в D:\Dist\OSA\OsEngine_v0.9.3_Beta\Проект\OsEngine\Market\Connector.cs:строка 746
30.01.2017 16:47:19_Error_System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
2. Очень часто неправильно набирает/закрывает позицию. Например, пытаюсь закрыть лонговую позицию:
List
openPositions = _tab0SR.PositionsOpenAll;
А он мне не только лонг закрывает, но и шорт набирает при этом...
Или входит в позицию больше, чем просил....
Я на смарткоме. Чем лечить?
Я на смарткоме. Чем лечить?
по первому. Надо открыть класс BotTabSimple и вставить перед 3293 строкой вот это:
if (trades[i2] == null)
{
trades.RemoveAt(i2);
return;
}
Должно отпустить. Не знаю откуда там null... Но костыль должен это дело обойти. В новом релизе этого соответственно не будет. Но новый релиз будет недели через две только. Надо кое что допилить...
по второму.
Тут нужно смотреть торговую логику. Важно чтобы у робота было время между вызовами функций открытия и закрытия позиций. Если его не будет и робот не успеет получить коллБеки по предыдущим запросам - будут такие штуки. Как бороться - запретить роботу вызывать эти функции чаще раза в 2 - 5 секунд.
Сделал раздел баги: http://o-s-a.net/forum/20
и предложения: http://o-s-a.net/forum/21
По первому - спасибо!
По второму:
Цитата: Алексей ВанТут нужно смотреть торговую логику. Важно чтобы у робота было время между вызовами функций открытия и закрытия позиций. Если его не будет и робот не успеет получить коллБеки по предыдущим запросам - будут такие штуки. Как бороться - запретить роботу вызывать эти функции чаще раза в 2 - 5 секунд.
Логика простая:
private void Strateg_CandleFinishedEvent(List candles)
{
if ( условие по времени)
{
ClosePosition();
}
}
private void ClosePosition()
{
}
Таймфрейм 15 мин. К моменту закрытия позиция была открыта несколько часов. Между этими функциям открытия и закрытия никак не могло быть 2-5 секунд....
Таймфрейм 15 мин. К моменту закрытия позиция была открыта несколько часов. Между этими функциям открытия и закрытия никак не могло быть 2-5 секунд....
сложно сказать что не так. Попробуйте закрываться лимитками глубоко в рынок передавая в метод название сигнала на закрытие. Можно попробовать логировать работу. Фиксируя время когда вызывается закрытие позиции. Сами функции закрытия работают нормально, уже на 100 раз протестировано всё.
Цитата: Алексей Ван
Смог смоделировать. Если удалить SmartCom.dll что рядом с экзешником или потерять на него ссылку, то возникает такая ошибка.
А позвольте полюбопытствовать, за счёт чего такая конфузия?
По идее ведь ее местоположение, как любой порядочной COM-дллки должно дергаться из реестра...
Или вы используете лежащую рядом библиотечку для каких-то своих нестандартных низменных целей чуть ли не на уровне ассемблера?
Или вы используете лежащую рядом библиотечку для каких-то своих нестандартных низменных целей чуть ли не на уровне ассемблера?
Нечего такого. Всё стандартно.
Друзья, в SmartCom есть такое событие как SmartServer.UpdateQuote там есть много вкусностей таких, как общий объём ЦБ с требованием на покупку или продажу и многое другое чего не нашёл в библиотеке. В библиотеке нашёл аналог общего объёма в MarketDepth (marketDepth.AskSummVolume и marketDepth.BidSummVolume), но он в высчитывает только то, что показывает смарткомовский стакан 50 уровней вверх и вниз от текущей цены. Пытался по аналогии с другими событиями в SmartComServers.cs добавить SmartServer.UpdateQuote, но навыков программирования увы не хватило... Ругается на то что "нет перегруженного метода для SmartServer_UpdateQuote, который соответствует делегату _IStClient_UpdateQujteEventHandler". Есть ли в планах расширение функционала для SmartCom подключения? И в каком формате у вас проходит платное обучение и сколько оно длится?
Цитата: vshka
Друзья, в SmartCom есть такое событие как SmartServer.UpdateQuote там есть много вкусностей таких, как общий объём ЦБ с требованием на покупку или продажу и многое другое чего не нашёл в библиотеке. В библиотеке нашёл аналог общего объёма в MarketDepth (marketDepth.AskSummVolume и marketDepth.BidSummVolume), но он в высчитывает только то, что показывает смарткомовский стакан 50 уровней вверх и вниз от текущей цены. Пытался по аналогии с другими событиями в SmartComServers.cs добавить SmartServer.UpdateQuote, но навыков программирования увы не хватило... Ругается на то что "нет перегруженного метода для SmartServer_UpdateQuote, который соответствует делегату _IStClient_UpdateQujteEventHandler". Есть ли в планах расширение функционала для SmartCom подключения? И в каком формате у вас проходит платное обучение и сколько оно длится?
В обучении у нас создание роботов в слое создания роботов. Там скриптовый язык основанный на СиШарп, которым нужно пользоваться для создания роботов. ООП, Паттерны и прочее мы на этом обучении не даём. И оно не поможет Вам реализовать данную функцию.
Вообще не планируется ничего такого. Разные платформы выдают разные штуки. Под всё не подстроишься. Однако, если купите обучение полное, сделаю такую штуку Вам лично. Можно не насиловать всю иерархию до слоя создания ботов, а сделать в сервере статический массив с нужными Вам данными, которые можно будет запрашивать от куда угодно как из глобальной переменной.
Уважаемый Алексей!
Помогите, плз. Сдуру поставил последнюю версию смарткома. Скомпилировать не удалось. Вернул старую - ошибка повторяется - не может внедрить st.server class.Как правильно самому добавлять ссылку на смартком? Пожалуйста, дайте инструкцию. Просто замена версии на старую не помогает. Студия отказывается компилировать.
Пытался даже реестр чистить. Увы.
Спасибо.
Цитата: Алексей Ван
Цитата: agraton
Уважаемый Алексей!
Помогите, плз. Сдуру поставил последнюю версию смарткома. Скомпилировать не удалось. Вернул старую - ошибка повторяется - не может внедрить st.server class.Как правильно самому добавлять ссылку на смартком? Пожалуйста, дайте инструкцию. Просто замена версии на старую не помогает. Студия отказывается компилировать.
Пытался даже реестр чистить. Увы.
Спасибо.
Скачайте чистую версию всего дистрибутива с гитХаба. Распакуйте её и запустите. Всё должно быть хорошо. https://github.com/AlexWan/OsEngine
К сожалению - нет. Работает все, кроме квик луа. А он очень нужен. Такое впечатление, что происходит подмена идентификатора интеропа смарткома. Как все-таки правильно самому менять(или устанавливать) смартком в проекте?
Цитата: agraton
Уважаемый Алексей!
Помогите, плз. Сдуру поставил последнюю версию смарткома. Скомпилировать не удалось. Вернул старую - ошибка повторяется - не может внедрить st.server class.Как правильно самому добавлять ссылку на смартком? Пожалуйста, дайте инструкцию. Просто замена версии на старую не помогает. Студия отказывается компилировать.
Пытался даже реестр чистить. Увы.
Спасибо.
Скачайте чистую версию всего дистрибутива с гитХаба. Распакуйте её и запустите. Всё должно быть хорошо. https://github.com/AlexWan/OsEngine
Цитата: agraton
Цитата: Алексей Ван
Цитата: agraton
Уважаемый Алексей!
Помогите, плз. Сдуру поставил последнюю версию смарткома. Скомпилировать не удалось. Вернул старую - ошибка повторяется - не может внедрить st.server class.Как правильно самому добавлять ссылку на смартком? Пожалуйста, дайте инструкцию. Просто замена версии на старую не помогает. Студия отказывается компилировать.
Пытался даже реестр чистить. Увы.
Спасибо.
Скачайте чистую версию всего дистрибутива с гитХаба. Распакуйте её и запустите. Всё должно быть хорошо. https://github.com/AlexWan/OsEngine
К сожалению - нет. Работает все, кроме квик луа. А он очень нужен. Такое впечатление, что происходит подмена идентификатора интеропа смарткома. Как все-таки правильно самому менять(или устанавливать) смартком в проекте?
Самому у Вас врятли получится что-то поменять. Для этого нужно переделывать ServerSmartCom. И фиксить все изменения. Т.к. версия от версии отличается. Удалите все старые версии смартКом и установите ту что лежит в дистрибутивах с OsEngine, в папке Doc
Добрый день.
Впервые знакомлюсь с OsEngine. Перед глубоким погружением хотел запустить потестировать, но столкнулся с такой проблемой:
на главном компьютере при подключении к демо СмарткКому выдает ошибку:
22.04.2021 19:57:18_Error_System.Runtime.InteropServices.COMException (0x80040154): Не удалось получить фабрику класса COM для компонента с CLSID {736FA857-AA22-4941-9032-0ED0EA076B23} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Причем тестовый пример Смарткома работает, то есть инсталяция Смарткома срабатывает нормально. Сборка 32. Пробовал и новые сборки OsEngine и exe файл в первоночальном виде. Скачивал и с гитхаба и с сайта.
На запасном компьютере попробовал, все тоже самое шаг в шаг, там OsEngine подключился к тестовому Смарткому корректно.
Но компьютерах отличается операционка на главном виндоус 10(а где все сработало 7). В остальном набор установленного ПО схож. Моего уровня знаний не хватает чтобы починить.
Помогите кто знает, пжл.
Цитата: sergei
Добрый день.
Впервые знакомлюсь с OsEngine. Перед глубоким погружением хотел запустить потестировать, но столкнулся с такой проблемой:
на главном компьютере при подключении к демо СмарткКому выдает ошибку:
22.04.2021 19:57:18_Error_System.Runtime.InteropServices.COMException (0x80040154): Не удалось получить фабрику класса COM для компонента с CLSID {736FA857-AA22-4941-9032-0ED0EA076B23} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Причем тестовый пример Смарткома работает, то есть инсталяция Смарткома срабатывает нормально. Сборка 32. Пробовал и новые сборки OsEngine и exe файл в первоночальном виде. Скачивал и с гитхаба и с сайта.
На запасном компьютере попробовал, все тоже самое шаг в шаг, там OsEngine подключился к тестовому Смарткому корректно.
Но компьютерах отличается операционка на главном виндоус 10(а где все сработало 7). В остальном набор установленного ПО схож. Моего уровня знаний не хватает чтобы починить.
Помогите кто знает, пжл.
Попробуй установить сборку СмартКом из дистрибутивов OsEngine. Папка doc
ООО «ВАН ТЕХНОЛОГИИ»т: +7 953 769 56 45
* Торговля на финансовых рынках связана с риском, который лежит на Вас.
* Ничто из написанного на сайте o-s-a.net не является рекомендацией.
* Если Вы этого не понимаете, не читайте этот сайт, ничего не покупайте.