Создание порядков 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 см. Руководство по Ссылке CQG API.

Установите соединение с 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 Instrument

При установленном соединении подпишитесь на инструмент 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 объект см. Справочное руководство CQG API.

accountHandle = c.Handle.Accounts.ItemByIndex(0);

Создайте CQG Market, Limit, Stop и Stop Limit Orders

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

quantity = 1;

oMarket = createOrder(c,cqgInst,1,accountHandle,quantity);
oMarket.Place
ans =
    OrderChanged

The 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

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

Для создания предела порядка можно использовать цену предложения. Извлечение объекта предложения CQG qtBid из ранее заданного CQGInstrument cqgInst объекта. Для получения дополнительной информации о CQGInstrument объект см. Справочное руководство CQG API.

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

The 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

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

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

quantity = 1;

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

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

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

shutDown(c)

См. также

| | | | | | |

Похожие примеры

Подробнее о

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