Отправка X_TRADER порядков

В этом примере показано, как соединиться с X_TRADER® и отправлять порядки.

Подключение к X_TRADER

X = xtrdr;

Создайте инструмент

createInstrument(X,'Exchange','CME','Product','2F',...
                'ProdType','Future','Contract','Aug13',...
                'Alias','SubmitOrderInstrument1')

Регистрация обработчиков событий

Зарегистрируйте обработчики событий для сервера order. Обратный коллбэк ttorderserverstatus назначается событию OnExchangeStateUpdate чтобы убедиться, что сервер порядка на обмен запрашиваемого инструмента работает. В противном случае никакие порядки не могут быть отправлены.

sExchange = X.Instrument.Exchange;
registerevent(X.Gate,{'OnExchangeStateUpdate',...
      @(varargin)ttorderserverstatus(varargin{:},sExchange)})

Создание набора порядков

The OrderSet объект отправляет порядки в X_TRADER.

Установите свойства OrderSet объект и детализация уровня событий статуса порядка. Включите обновление порядка и отклоните (отказ) события, чтобы вы могли назначить коллбэки для обработки этих условий.

createOrderSet(X)
X.OrderSet(1).EnableOrderRejectData = 1;
X.OrderSet(1).EnableOrderUpdateData = 1;
X.OrderSet(1).OrderStatusNotifyMode = 'ORD_NOTIFY_NORMAL';

Установите проверку пределов положения

Установите, проверяет ли набор порядков пределы положения при отправке порядка.

X.OrderSet(1).Set('NetLimits',false)

Установите функцию обратного вызова

Установите коллбэк, чтобы обработать OnOrderFilled события. Каждый раз, когда порядок заполняется (или частично заполняется), этот коллбэк вызывается.

registerevent(X.OrderSet(1),{'OnOrderFilled',...
                     @(varargin)ttorderevent(varargin{:},X)})

Включить отправку порядка

Сначала необходимо включить отправку порядка, прежде чем отправлять порядки в X_TRADER.

X.OrderSet(1).Open(1)

Создайте профиль Порядка

Создайте профиль порядка с помощью существующего инструмента. Профиль порядка содержит параметры настройки, определяющие отправленный порядок. Допустимое Set показаны параметры:

orderProfile = createOrderProfile(X);
orderProfile.Instrument = X.Instrument(1);
orderProfile.Customer = '<Default>';

Выборка: Создайте рыночный Порядок

Создайте рыночный порядок на покупку 100 акций.

orderProfile.Set('BuySell','Buy')
orderProfile.Set('Qty',100)
orderProfile.Set('OrderType','M')

Выборка: Создайте предельный порядок

Создайте порядок предела путем установки OrderType и предельную цену порядка.

orderProfile.Set('OrderType','L')
orderProfile.Set('Limit$','127000')

Выборка: Создайте порядок стопового рынка

Создайте порядок стоп-рынка и установите ограничение порядка на стоп- порядок и стоп-цену.

orderProfile.Set('OrderType','M')
orderProfile.Set('OrderRestr','S')
orderProfile.Set('Stop$','129800')

Выборка: Создайте порядок предельного стопа

Создайте стоп- предел порядка и установите порядок ограничение, тип, предельную цену и стоп-цену.

orderProfile.Set('OrderType','L')
orderProfile.Set('OrderRestr','S')
orderProfile.Set('Limit$','128000')
orderProfile.Set('Stop$','127500')

Проверьте состояние сервера порядков

Проверьте состояние сервера порядков перед отправкой порядка и добавьте счетчик, чтобы пример не задерживал.

nCounter = 1;
while ~exist('bServerUp','var') && nCounter < 20
   pause(1)
   nCounter = nCounter + 1;
end

Проверьте доступность сервера Order

Перед отправкой порядка проверьте доступность сервера порядков биржи.

if exist('bServerUp','var') && bServerUp
   submittedQuantity = X.OrderSet(1).SendOrder(orderProfile);
   disp(['Quantity Sent: ' num2str(submittedQuantity)])
else
   disp('Order Server is down. Unable to submit order')
end

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

close(X)

См. также

| | | |

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

Подробнее о

Для просмотра документации необходимо авторизоваться на сайте