СОМ- интерфейс , что это такое -?
прости за такой вопрос но Я пишу пока только в ёкселе и с квиком имею связь только через текстовый файл.
Описание с Википедии http://ru.wikipedia.org/wiki/Microsoft_Component_Object_Model#.D0.9F.D1.83.D1.82.D0.B0.D0.BD.D0.B8.D1.86.D0.B0_.D0.B2_.D0.BD.D0.B0.D0.B7.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F.D1.85
Ну а в целом что бы примернофункционал понятен стал выкладываю краткую инструкцию.
Краткое описание COM-интерфейса SmartTrade (в стиле «у зайца длинные уши»).
Наблюдение за торгами 1
Наблюдение за счетом 3
Выставление приказов 4
Интерфейс позволяет получать в реальном времени информацию о торгах (котировки, очередь заявок, сделки), запрашивать исторические данные по инструментам, наблюдать за состоянием счета и выставлять заявки.
Интерфейс не автономен: взаимодействие с сервером осуществляется программой SmartTrade (Pro), а интерфейсная библиотека (stcln.dll) исполняет роль посредника и работоспособна только при установленном в SmartTrade соединении.
Программно интерфейс представляет собой COM класс StServer реализующий интерфейс IStServer и генерирующий события в диспетчериземый интерфейс _IStClient.
Для выставления и отмены приказов необходимо изменить настройки SmartTrade:
1. В меню Настройки->Основные->Внешний приказы установить переключатель в положение WealthLab Developer
2. При необходимости снять галочку напротив «При постановке внешнего приказа выводить сообщение для подтверждения».
Наблюдение за торгами
Для получения информации по инструменту в реальном времени необходимо «подписаться» на прослушивание вызвав соответствующий метод IStServer:
HRESULT ListenQuotes(
BSTR symbol); -- котировки
HRESULT ListenBidAsks(
BSTR symbol); -- очередь заявок (стакан)
HRESULT ListenTicks(
BSTR symbol); -- сделки
symbol – код ЦБ на бирже
В результате подписки _IStClient начнет получать события:
1. Обновление котировок
HRESULT UpdateQuote(
BSTR symbol,
DATE datetime,
double open,
double high,
double low,
double last,
double volume,
double size,
double bid,
double ask,
double bidsize,
double asksize);
2. Обновление стакана
HRESULT UpdateBidAsk(
BSTR symbol,
long row,
long nrows,
double bid,
double bidsize,
double ask,
double asksize);
Полый «стакан» сортируется и передается построчно за несколько вызовов. Каждая строка содержит цены и объемы предложений или нули, если предложения на покупку или продажу исчерпаны. Лучшие предложения имеют меньший номер строки (row), общее количество строк (nrows) в процессе передачи стакана не меняется.
3. Все сделки
HRESULT AddTick(
BSTR symbol,
DATE datetime,
double price,
double volume);
Отменить подписку можно вызовами
HRESULT CancelQuotes(
BSTR symbol);
HRESULT CancelBidAsks(
BSTR symbol);
HRESULT CancelTicks(
BSTR symbol);
Запрос исторических интервальных данных производится методом
HRESULT GetBars(
BSTR symbol,
StBarInterval interval,
DATE since,
long count);
Если количество запрашиваемых интервалов положительно, сбор идет «назад» по времени в прошлое от указанной даты; если отрицательно – то «вперед». Данные поинтервально возвращаются в событии
HRESULT AddBar(
BSTR symbol,
StBarInterval interval,
DATE datetime,
double open,
double high,
double low,
double close,
double volume);
Отменить запрос истории можно методом
HRESULT CancelBars(
long cookie);
Наблюдение за счетом
Наблюдение за счетом устанавливается методом
HRESULT ListenPortfolio(
BSTR portfolio);
Porftfolio – номер активного счета в верхнем регистре
По установке наблюдения и по изменению состояния счета возникают следующие события:
Изменение количества наличности
HRESULT SetPortfolio(
BSTR portfolio,
double cash,
double leverage,
double comission,
double saldo);
По счету произошла сделка
HRESULT AddTrade(
BSTR portfolio,
BSTR symbol,
__int64 orderid,
double price,
double amount,
DATE datetime);
Изменился или возник новый приказ
HRESULT UpdateOrder(
BSTR portfolio,
BSTR symbol,
StOrder_State state,
StOrder_Action action,
StOrder_Type type,
StOrder_Validity validity,
double price,
double amount,
double filled,
DATE datetime,
__int64 orderid,
BSTR reason);
Состояние приказа принимает значения
enum {
StOrder_State_ContragentReject = -1,
StOrder_State_Submited = 0,
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
} StOrder_State;
Изменилась позиция
HRESULT UpdatePosition(
BSTR portfolio,
BSTR symbol,
double avprice,
double amount,
double planned);
Слежение за счетом отменяется вызовом
HRESULT CancelPortfolio(
BSTR portfolio);
Выставление приказов
Выставить приказ можно методом
HRESULT PlaceOrder(
BSTR portfolio,
BSTR symbol,
StOrder_Action action,
StOrder_Type type,
StOrder_Validity validity,
double price,
double amount);
Параметры приказов определены следующими константами
enum {
StOrder_Action_Buy = 1,
StOrder_Action_Sell = 2,
StOrder_Action_Short = 3,
StOrder_Action_Cover = 4
} StOrder_Action;
enum {
StOrder_Type_Market = 1,
StOrder_Type_Limit = 2,
StOrder_Type_Stop = 3
} StOrder_Type;
enum {
StOrder_Validity_Day = 1,
StOrder_Validity_Gtc = 2
} StOrder_Validity;