exponenta event banner

Создание заказов CQG

В этом примере показано, как подключиться к CQG ®, определить обработчики событий, подписаться на защиту, определить дескриптор учетной записи и отправить заказы на выполнение.

Создание соединения 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. Инструмент должен быть успешно подписан до того, как он станет доступным для транзакций. Необходимо отформатировать имя прибора в виде длинного символа 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);

Создание заказов CQG Market, Limit, Stop и Stop Limit

Создание рыночного заказа на покупку одной доли подписанного обеспечения 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.Place
ans =
    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.Place
ans =
    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.Place
ans =
    OrderChanged

CQGOrder объект oStop содержит заказ. CQG API выполняет команду stop с помощью функции CQG API. Place. После выполнения статус заказа изменяется.

Чтобы создать заказ на стоп-лимит, используйте цену предложения и торговую цену, определенную выше. Создать заказ на стоп-лимит для покупки одной доли подписанного обеспечения cqgInst использование определенных учетных данных accountHandle.

quantity = 1;

oStopLimit = createOrder(c,cqgInst,4,accountHandle,quantity, ...
    limitprice,stopprice);
oStopLimit.Place
ans =
    OrderChanged

CQGOrder объект oStopLimit содержит заказ. CQG API выполняет команду stop limit с помощью функции CQG API. Place. После выполнения статус заказа изменяется.

Закрытие соединения CQG

shutDown(c)

См. также

| | | | | | |

Связанные примеры

Подробнее

Внешние веб-сайты