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 в случае его отсутствия.