SMARTCOM (COM-интерфейс SmartTrade)
Версия 2.0
Руководство разработчика
Введение. 2
Установка и настройка. 3
Новая функциональность. 4
Отличия от предыдущих версий. 4
Наблюдение за торгами. 5
Наблюдение за счетом.. 11
Выставление и отмена приказов. 15
Управление подключением к ТС.. 18
Получение справочника ценных бумаг. 18
Отслеживание статуса соединения с торговым сервером.. 20
Введение
SmartCOM - это программный комплекс, обеспечивающий доступ к торговой системе ITTrade.
С помощью интерфейса SmartCOM, клиентское приложение получает доступ к данным о торгах в реальном режиме времени и функциональности управления портфелем в торговой системе.
Программный комплекс состоит из 3х видов компонент
1. Серверная часть - работает как сервис вне клиентского процесса .
2. Прокси библиотеки - обеспечивают взаимодействие клиентской части и серверной ( через rpc).
3. Клиентский интерфейс - интерфейс пригодный для использования в скриптовых языках и обеспечивающий развязку между однопоточной серверной частью и клиентским приложением.
Установка и настройка
1. Зарегистрировать серверную часть com интерфейса
Smartcom2.exe /service
2. Зарегистрировать прокси библиотеки
Regsvr32 SmartCom2PS. dll
Regsvr32 stdatsrvps. dll
3. Зарегистрировать клиентскую часть интерфейса
Regsvr32 stcln. dll
Новая функциональность
1. идентификация приказов.
В callbackах placeorder добавлен параметр с системным номером приказа.
2. moveorder только для торговой площадки РТС. Открыт доступ к функции moveorder
3. добавлены разннообразные параметры фьючерсов в канал котировок
4. добавлены методы connect/disconnect для управления сессиейс тс. Интерфейс поддерживает только одну сессию и прияз открытии новой зпакрывает старую
Отличия от предыдущих версий
1. Нет автоматического реконнекта. Клиентское приложение получает события о состоянии связи и должно самостоятельно. Принимать решения о повторном подключения
2. Так как ранее подключение к ТС управлялось терминалом и сразу после создания клиентской части интерфейса были доступны интерфейсы ТС то теперь вызывать функции доступа к тс можно только после получения события connect. Поведение комплекса при вызове процедур доступа до получения connect или получения disconnect не определено
При неуспешной попытке подключения система уведомит приложение событием disconnect
Наблюдение за торгами
Для получения информации по инструменту в реальном времени необходимо «подписаться» на прослушивание, вызвав соответствующий метод IStServer:
Котировки
HRESULT ListenQuotes(
BSTR symbol);
Очередь заявок
HRESULT ListenBidAsks(
BSTR symbol);
Все сделки
HRESULT ListenTicks(
BSTR symbol);
Отменить подписку можно вызовами соответствующих методов:
HRESULT CancelQuotes(
BSTR symbol);
HRESULT CancelBidAsks(
BSTR symbol);
HRESULT CancelTicks(
BSTR symbol);
Параметры
Наименование | Тип | Описание |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
В результате подписки _IStClient начнет получать события:
Обновление котировок
HRESULT UpdateQuote(
BSTR symbol,
DATE datetime,
double open,
double high,
double low,
double close,
double last,
double volume,
double size,
double bid,
double ask,
double bidsize,
double asksize,
double open_int,
double go_buy,
double go_sell,
double go_base,
double go_base_backed,
double high_limit,
double low_limit);
Параметры
Наименование | Тип | Описание |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
datetime | Дата | Время последней сделки |
open | Число | Цена первой сделки после открытия торговой сессии |
high | Число | Максимальная цена за текущую торговую сессию |
low | Число | Минимальная цена за текущую торговую сессию |
close | Число | Цена последней сделки предыдущей торговой сессии |
last | Число | Последняя цена сделки за текущую торговую сессию |
volume | Число | Совокупный объем по ценной бумаге |
size | Число | Объем последней сделки в количественном выражении |
bid | Число | Цена спроса на данную ценную бумагу |
ask | Число | Цена предложения на данную ценную бумагу |
bidsize | Число | Совокупный объем ценных бумаг с требованием на покупку |
asksize | Число | Совокупный объем ценных бумаг с требованием на продажу |
open_int | Число | Совокупная стоимость открытых позиций |
go_buy | Число | Гарантийное обеспечение покупки (фьючерсы) |
go_sell | Число | Гарантийное обеспечение продажи (фьючерсы) |
go_base | Число | Базовое ГО (гарантийное обеспечение продажи опционов) |
go_base_backed | Число | Гарантийное обеспечение по синтетическим позициям (опционы) |
High_limit | Верхний лимит цен | |
Low_lomit | Нижний лимит цен |
Обновление очереди заявок
HRESULT UpdateBidAsk(
BSTR symbol,
long row,
long nrows,
double bid,
double bidsize,
double ask,
double asksize);
Параметры
Наименование | Тип | Описание |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
row | Число | Порядковый номер строки в очереди заявок |
nrow | Число | Общее количество строк в очереди заявок |
bid | Число | Цена на покупку |
ask | Число | Цена на продажу |
bidsize | Число | Объем ценных бумаг по цене спроса |
asksize | Число | Объем ценных бумаг по цене предложения |
Полый «стакан» сортируется и передается построчно за несколько вызовов. Каждая строка содержит цены и объемы предложений или нули, если предложения на покупку или продажу исчерпаны. Лучшие предложения имеют меньший номер строки (row), общее количество строк (nrows) в процессе передачи стакана не меняется.
Все сделки
HRESULT AddTick(
BSTR symbol,
DATE datetime,
double price,
double volume,
BSTR tradeNo);
Параметры
Наименование | Тип | Описание |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
datetime | Строка | Дата и время сделки |
price | Число | Цена сделки |
volume | Число | Объем сделки |
tradeNo | Строка | Биржевой идентификатор сделки |
Исторические данные
Запрос исторических интервальных данных производится методом
HRESULT GetBars(
BSTR symbol,
StBarInterval interval,
DATE since,
long count);
Параметры
Наименование | Тип | Описание |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
interval | Число | Интервал времени, принимает значения типа StBarInterval. Возможные значения: StBarInterval_Tick = 0, StBarInterval_1Min = 1, StBarInterval_5Min = 2, StBarInterval_10Min = 3, StBarInterval_15Min = 4, StBarInterval_30Min = 5, StBarInterval_60Min = 6, StBarInterval_2Hour = 7, StBarInterval_4Hour = 8, StBarInterval_Day = 9, StBarInterval_Week = 10, StBarInterval_Month = 11, StBarInterval_Quarter = 12, StBarInterval_Year = 13 |
since | Дата | Дата начала запрашиваемого интервала |
count | Число | Количество запрашиваемых интервалов |
Если количество запрашиваемых интервалов положительно, сбор идет «назад» по времени в прошлое от указанной даты; если отрицательно – то «вперед».
Данные поинтервально возвращаются в событии:
HRESULT AddBar(
BSTR symbol,
StBarInterval interval,
DATE datetime,
double open,
double high,
double low,
double close,
double volume);
Параметры
Наименование | Тип | Описание |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
Interval | Число | Интервал времени, принимает значения типа StBarInterval. Возможные значения: StBarInterval_Tick = 0, StBarInterval_1Min = 1, StBarInterval_5Min = 2, StBarInterval_10Min = 3, StBarInterval_15Min = 4, StBarInterval_30Min = 5, StBarInterval_60Min = 6, StBarInterval_2Hour = 7, StBarInterval_4Hour = 8, StBarInterval_Day = 9, StBarInterval_Week = 10, StBarInterval_Month = 11, StBarInterval_Quarter = 12, StBarInterval_Year = 13 |
datetime | Дата | Дата и время |
open | Число | Цена первой сделки после открытия торговой сессии на дату datetime |
high | Число | Максимальная цена за торговую сессию на дату datetime |
low | Число | Минимальная цена за торговую сессию на дату datetime |
close | Число | Цена последней сделки предыдущей торговой сессии относительно даты datetime |
last | Число | Последняя цена цена сделки за торговую сессию на дату datetime |
volume | Число | Совокупный объем по ценной бумаге за торговую сессию в количественном выражении на дату datetime |
Наблюдение за счетом
Наблюдение за счетом устанавливается методом
HRESULT ListenPortfolio(
BSTR portfolio);
Слежение за счетом отменяется вызовом
HRESULT CancelPortfolio(
BSTR portfolio);
Параметры
Наименование | Тип | Описание |
portfolio | Строка | Номер торгового счета на конкретной торговой площадке (указывается в верхнем регистре) |
По установке наблюдения и по изменению состояния счета возникают следующие события:
Изменение состояния торгового счета
HRESULT SetPortfolio(
BSTR portfolio,
double cash,
double leverage,
double comission,
double saldo);
Параметры
Наименование | Тип | Описание |
portfolio | Строка | Номер торгового счета на конкретной торговой площадке (указывается в верхнем регистре) |
cash | Число | Сумма доступных наличных средств |
leverage | Число | Плечо для маржинальной торговли |
commission | Число | Сумма биржевой комиссии за текущую торговую сессию |
saldo | Число | Сальдо торгового счета |
Изменился или возник новый приказ
HRESULT UpdateOrder(
BSTR portfolio,
BSTR symbol,
StOrder_State state,
StOrder_Action action,
StOrder_Type type,
StOrder_Validity validity,
double price,
double amount,
double stop,
double filled,
DATE datetime,
BSTR orderid,
BSTR orderno);
Параметры
Наименование | Тип | Описание |
portfolio | Строка | Номер торгового счета на конкретной торговой площадке (указывается в верхнем регистре) |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
state | Число | Состояние приказа. Принимает следующие значения: StOrder_State_Pending = 1, - Зарегистрирован в ТС StOrder_State_Open = 2, - Выведен на биржу StOrder_State_Expired = 3, - Снят по окончании торгового дня StOrder_State_Cancel = 4, - Отменен StOrder_State_Filled = 5, - Исполнен StOrder_State_Partial = 6, - Исполнен частично StOrder_State_ContragentCancel = 7, - Отклонен биржей StOrder_State_SystemReject = 8, - Отклонен биржей StOrder_State_SystemCancel = 9 – Отклонен биржей |
action | Число | Вид торговой операции. Принимает следующие значения: StOrder_Action_Buy = 1, - Купить stOrder_Action_Sell = 2, - Продать stOrder_Action_Short = 3, - Открыть «короткую позицию» StOrder_Action_Cover = 4 – Закрыть «короткую» позицию |
type | Число | Тип приказа. Принимает следующие значения: StOrder_Type_Market = 1, - Приказ по рынку StOrder_Type_Limit = 2, - Лимитированный приказ StOrder_Type_Stop = 3, - СТОП-приказ StOrder_Type_StopLimit = 4 – приказ СТОП-ЛИМИТ |
validity | Число | Срок действия приказа. Принимает следующие значения: StOrder_Validity_Day = 1, - День StOrder_Validity_Gtc = 2 – GTC (до отмены, макс. 30 дней) |
price | Число | Цена лимит (для приказов типа СТОП и СТОП-ЛИМИТ) |
amount | Число | Количество ЦБ в приказе |
stop | Число | Цена СТОП для приказов типа СТОП и СТОП-ЛИМИТ |
filled | Число | Объем, уже исполненный по приказу |
datetime | Число | Время выставления приказа в торговую систему |
orderid | Число | ИД приказа в торговой системе |
orderno | Число | ИД приказа на торговой площадке (бирже) |
При установке наблюдения в событие передаются все приказы, уже выставленные в текущей торговой сессии.
По счету произошла сделка
HRESULT AddTrade(
BSTR portfolio,
BSTR symbol,
__int64 orderid,
double price,
double amount,
DATE datetime);
При установке наблюдения в событие передаются все сделки, уже совершенные в текущей торговой сессии.
Параметры
Наименование | Тип | Описание |
portfolio | Строка | Номер торгового счета на конкретной торговой площадке (указывается в верхнем регистре) |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
orderid | Число | ИД приказа ТС, по которому совершена сделка |
price | Число | Цена сделки |
amount | Число | Объем сделки (Положительное значение в случае покупки, отрицательное в случае продажи) |
datetime | Дата | Дата и время сделки |
Изменилась позиция
HRESULT UpdatePosition(
BSTR portfolio,
BSTR symbol,
double avprice,
double amount,
double planned);
Параметры
Наименование | Тип | Описание |
portfolio | Строка | Номер торгового счета на конкретной торговой площадке (указывается в верхнем регистре) |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
avprice | Число | Средневзвешенная цена |
amount | Число | Количество ЦБ (положительное значение в случае «длинной» позиции», отрицательное – в случае «короткой» позиции) |
planned | Число | Количество ЦБ с учетом выставленных заявок |
Выставление и отмена приказов
Выставить приказ можно методом
HRESULT PlaceOrder(
[in] BSTR portfolio,
[in] BSTR symbol,
[in] StOrder_Action action,
[in] StOrder_Type type,
[in] StOrder_Validity validity,
[in] double price,
[in] double amount,
[in] double stop
[in] double cookie);
Когда приказ отправится на сервер появится событие OrderSucceeded(cookie) в случае успешной отправки, либо OrderFailed(cookie, reason) в противном случае. При этом в параметр reason должно прийти текстовое сообщение об ошибке.
Параметры
Наименование | Тип | Описание |
portfolio | Строка | Номер торгового счета на конкретной торговой площадке (указывается в верхнем регистре) |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
action | Число | Вид торговой операции. Принимает следующие значения: StOrder_Action_Buy = 1, - Купить stOrder_Action_Sell = 2, - Продать stOrder_Action_Short = 3, - Открыть «короткую позицию» StOrder_Action_Cover = 4 – Закрыть «короткую» позицию |
type | Число | Тип приказа. Принимает следующие значения: StOrder_Type_Market = 1, - Приказ по рынку StOrder_Type_Limit = 2, - Лимитированный приказ StOrder_Type_Stop = 3, - СТОП-приказ StOrder_Type_StopLimit = 4 – приказ СТОП-ЛИМИТ |
validity | Число | Срок действия приказа. Принимает следующие значения: StOrder_Validity_Day = 1, - День StOrder_Validity_Gtc = 2 – GTC (до отмены, макс. 30 дней) |
price | Число | Цена лимит (для приказов типа СТОП и СТОП-ЛИМИТ) |
amount | Число | Количество ЦБ в приказе |
stop | Число | Цена СТОП для приказов типа СТОП и СТОП-ЛИМИТ |
Cookie | Число | Произвольный числовой идентификатор, который передается в OrderFailed и OrderSucceeded |
Отменить приказ можно следующим методом
HRESULT CancelOrder(
BSTR portfolio,
BSTR symbol,
BSTR orderid);
Параметры
Наименование | Тип | Описание |
portfolio | Строка | Номер торгового счета на конкретной торговой площадке (указывается в верхнем регистре) |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
orderid | Число | ИД приказа в торговой системе |
Управление подключением к ТС
Подключение к ТС осуществляется вызовом метода connect
HRESULT connect ( [in] BSTR ip,
[in] short port,
[in] BSTR login,
[in] BSTR password) ;
Параметры
Наименование | Тип | Описание |
IP | Строка | Адрес торговой системы |
PORT | Число | TCP порт ( Обычно 8090 ) |
Login | =) | |
Password | =) |
Рассоединиться с торговой системой
HRESULT disconnect( );
Получение справочника ценных бумаг
Для получения справочника ЦБ необходимо вызвать сметод GetSymbols(). В результате его работы в событие AddSymbol возвращается полный справочник ценных бумаг.
HRESULT AddSymbol(
double row,
double nrows,
BSTR symbol,
BSTR short_name,
BSTR long_name,
BSTR type,
double decimals,
double lot_size,
double punkt,
double step);
Параметры
Наименование | Тип | Описание |
row | Число | Порядковый номер записи в справочнике |
nrow | Число | Общее количество записей в справочнике |
symbol | Строка | Код ЦБ из таблицы котировок SmartTrade |
short_name | Строка | Краткое наименование ЦБ |
long_name | Строка | Полное наименование ЦБ |
type | Строка | Код типа ЦБ из справочника SmartTrade «Типы ценных бумаг» |
decimals | Число | Точность цены |
lot_size | Число | Размер лота ценных бумаг |
punkt | Число | Цена пункта |
step | Число | Шаг цены в пунктах |
Отслеживание статуса соединения с торговым сервером
В SmartCOM существует два события, с помощью которых возможно отслеживать статус соединения терминала SmartTrade с торговым сервером.
В случае потери соединения терминала с торговым сервером и неудачной попытке соединения возникает событие Disconnected(reason BSTR).
Кроме этого, для диагностики статуса соединения с торговым сервером можно использовать метод IsConnected(), который возвращает TRUE в случае наличия соединения и FALSE в случае его отсутствия.


