Этот пример показывает, как соединиться с CQG®, задать обработчики событий, подписывается на безопасность, задает указатель учетной записи и представляет порядки для выполнения.
Создайте объект связи CQG использование cqg.
c = cqg;
Укажите демонстрационный обработчик событий cqgconnectioneventhandler к беговым соревнованиям, сопоставленным с состоянием связи.
eventNames = {'CELStarted','DataError','IsReady', ...
'DataConnectionStatusChanged', ...
'GWConnectionStatusChanged', ...
'GWEnvironmentChanged'};
for i = 1:length(eventNames)
registerevent(c.Handle,{eventNames{i}, ...
@(varargin)cqgconnectioneventhandler(varargin{:})})
endcqgconnectioneventhandler присвоен событиям в eventNames.
Установите свойства настройки API. Например, чтобы установить часовой пояс на Восточное Время, введите следующее.
c.APIConfig.TimeZoneCode = 'tzEastern';c.APIConfig является объектом настройки CQG. Для получения дополнительной информации о свойствах настройки установки API, см. Справочник API CQG.
Установите связь с CQG.
startUp(c)
CELStarted DataConnectionStatusChanged GWConnectionStatusChanged
Обработчик событий связи отображает имена события для успешной связи CQG.
Укажите обработчик событий к беговым соревнованиям, сопоставленным с инструментальной подпиской CQG.
streamEventNames = {'InstrumentSubscribed','InstrumentChanged', ...
'IncorrectSymbol'};
for i = 1:length(streamEventNames)
registerevent(c.Handle,{streamEventNames{i}, ...
@(varargin)cqgrealtimeeventhandler(varargin{:})})
endУкажите обработчик событий к беговым соревнованиям, сопоставленным с порядком CQG и учетной записью.
orderEventNames = {'AccountChanged','OrderChanged','AllOrdersCanceled'};
for i = 1:length(orderEventNames)
registerevent(c.Handle,{orderEventNames{i}, ...
@(varargin)cqgordereventhandler(varargin{:})})
endС установленной связью подпишитесь на инструмент CQG. Инструмент должен быть успешно подписан сначала, прежде чем это будет доступно для транзакций. Необходимо отформатировать инструментальное имя в CQG долгое представление символа. Например, чтобы подписаться на безопасность, связанную к EURIBOR, введите следующее.
realtime(c,'F.US.IE')
pause(2)F.US.IEK13 subscribed
pause заставляет MATLAB® ожидать 2 секунды прежде, чем продолжить давать время для CQG, чтобы подписаться на инструмент.
Создайте инструментальный объект CQG.
Чтобы использовать инструмент в createOrder, импортируйте имя инструмента cqgInstrumentName в текущее рабочее пространство MATLAB. Затем создайте объект CQGInstrument cqgInst.
cqgInstrumentName = evalin('base','cqgInstrument'); cqgInst = c.Handle.Instruments.Item(cqgInstrumentName);
Установите флаги CQG включать извлечение сведений об аккаунте.
set(c.Handle,'AccountSubscriptionLevel','aslNone') set(c.Handle,'AccountSubscriptionLevel','aslAccountUpdatesAndOrders') pause(2)
ans =
AccountChanged
API CQG показывает те измененные сведения об аккаунте.
Настройте учетные данные учетной записи CQG.
Получите объект CQGAccount в accountHandle, чтобы использовать ваши сведения об аккаунте в createOrder. Для получения дополнительной информации о создании объекта CQGAccount, см. Справочник API CQG.
accountHandle = c.Handle.Accounts.ItemByIndex(0);
Создайте порядок рынка, который покупает одну долю подписанной безопасности cqgInst с помощью учетных данных учетной записи accountHandle.
quantity = 1; oMarket = createOrder(c,cqgInst,1,accountHandle,quantity); oMarket.Place
ans =
OrderChanged
Объект CQGOrder oMarket содержит порядок. API CQG выполняет заказ рынка с помощью API-функции CQG Place. После выполнения, изменений статуса заказа.
Чтобы использовать вектор символов для безопасности, подпишите на безопасность 'EZC' как показано выше. Затем создайте порядок рынка, который покупает одну долю безопасности 'EZC' с помощью заданных учетных данных учетной записи accountHandle.
cqgInstrumentName = 'EZC';
quantity = 1;
oMarket = createOrder(c,cqgInstrumentName,1,accountHandle,quantity);
oMarket.Placeans =
OrderChanged
Объект CQGOrder oMarket содержит порядок. API CQG выполняет заказ рынка с помощью API-функции CQG Place. После выполнения, изменений статуса заказа.
Чтобы создать лимитный приказ, можно использовать цену предложения. Извлеките объект qtBid предложения CQG от ранее заданного объекта CQGInstrument cqgInst. Для получения дополнительной информации об объекте CQGInstrument, см. Справочник API CQG.
qtBid = cqgInst.get('Bid');
Создайте лимитный приказ, который покупает одну долю ранее подписанной безопасности cqgInst с помощью ранее заданных учетных данных учетной записи accountHandle и qtBid за цену предела.
quantity = 1;
limitprice = qtBid.get('Price');
oLimit = createOrder(c,cqgInst,2,accountHandle,quantity,limitprice);
oLimit.Placeans =
OrderChanged
Объект CQGOrder oLimit содержит порядок. API CQG выполняет лимитный приказ с помощью API-функции CQG Place. После выполнения, изменений статуса заказа.
Чтобы создать порядок остановки, можно использовать торговую цену. Извлеките объект qtTrade торговли CQG от ранее заданного объекта CQGInstrument cqgInst.
qtTrade = cqgInst.get('Trade');
Создайте порядок остановки, который покупает одну долю ранее подписанной безопасности cqgInst с помощью ранее заданных учетных данных учетной записи accountHandle и qtTrade за цену остановки.
quantity = 1;
stopprice = qtTrade.get('Price');
oStop = createOrder(c,cqgInst,3,accountHandle,quantity,stopprice);
oStop.Placeans =
OrderChanged
Объект CQGOrder oStop содержит порядок. API CQG выполняет заказ остановки с помощью API-функции CQG Place. После выполнения, изменений статуса заказа.
Чтобы создать лимитный приказ остановки, используйте обоих предложение и торговые цены, заданные выше. Создайте лимитный приказ остановки, который покупает одну долю подписанной безопасности cqgInst с помощью заданных учетных данных учетной записи accountHandle.
quantity = 1;
oStopLimit = createOrder(c,cqgInst,4,accountHandle,quantity, ...
limitprice,stopprice);
oStopLimit.Placeans =
OrderChanged
Объект CQGOrder oStopLimit содержит порядок. API CQG выполняет лимитный приказ остановки с помощью API-функции CQG Place. После выполнения, изменений статуса заказа.
shutDown(c)
close | cqg | createOrder | history | realtime | shutDown | startUp | timeseries