В этом примере показано, как подключиться к 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
CQG API показывает, что информация учетной записи изменилась.
Настройте учетные данные учетной записи 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 содержит заказ. CQG API выполняет рыночный заказ с помощью функции CQG API. Place. После выполнения статус заказа изменяется.
Чтобы использовать вектор символов для защиты, подпишитесь на защиту 'EZC' как показано выше. Затем создайте рыночный заказ, который покупает одну долю ценной бумаги 'EZC' использование определенных учетных данных accountHandle.
cqgInstrumentName = 'EZC';
quantity = 1;
oMarket = createOrder(c,cqgInstrumentName,1,accountHandle,quantity);
oMarket.Placeans =
OrderChanged
CQGOrder объект oMarket содержит заказ. CQG API выполняет рыночный заказ с помощью функции CQG API. Place. После выполнения статус заказа изменяется.
Для создания лимитного заказа можно использовать цену предложения. Извлечение объекта предложения CQG qtBid из ранее определенного 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 содержит заказ. CQG API выполняет предельный порядок с помощью функции CQG API. Place. После выполнения статус заказа изменяется.
Для создания заказа на остановку можно использовать торговую цену. Извлечение объекта торговли CQG qtTrade из ранее определенного 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 содержит заказ. CQG API выполняет команду stop с помощью функции CQG API. Place. После выполнения статус заказа изменяется.
Чтобы создать заказ на стоп-лимит, используйте цену предложения и торговую цену, определенную выше. Создать заказ на стоп-лимит для покупки одной доли подписанного обеспечения cqgInst использование определенных учетных данных accountHandle.
quantity = 1;
oStopLimit = createOrder(c,cqgInst,4,accountHandle,quantity, ...
limitprice,stopprice);
oStopLimit.Placeans =
OrderChanged
CQGOrder объект oStopLimit содержит заказ. CQG API выполняет команду stop limit с помощью функции CQG API. Place. После выполнения статус заказа изменяется.
shutDown(c)
close | cqg | createOrder | history | realtime | shutDown | startUp | timeseries