В этом примере показано, как соединиться с 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{:})}) end
cqgconnectioneventhandler
присвоен событиям в 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.Place
ans = 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.Place
ans = 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.Place
ans = OrderChanged
CQGOrder
объект oStop
содержит порядок. API CQG выполняет заказ остановки с помощью API-функции CQG Place
. После выполнения, изменений статуса заказа.
Чтобы создать лимитный приказ остановки, используйте обоих предложение и торговые цены, заданные выше. Создайте лимитный приказ остановки, который покупает одну долю подписанной безопасности cqgInst
использование заданных учетных данных учетной записи accountHandle
.
quantity = 1;
oStopLimit = createOrder(c,cqgInst,4,accountHandle,quantity, ...
limitprice,stopprice);
oStopLimit.Place
ans = OrderChanged
CQGOrder
объект oStopLimit
содержит порядок. API CQG выполняет лимитный приказ остановки с помощью API-функции CQG Place
. После выполнения, изменений статуса заказа.
shutDown(c)
cqg
| close
| createOrder
| history
| timeseries
| startUp
| shutDown
| realtime