exponenta event banner

Отправить заказы на X_TRADER

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

Подключиться к X_TRADER

X = xtrdr;

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

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

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

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

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

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

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

Проверка доступности сервера заказов

Перед отправкой заказа убедитесь, что данный сервер заказа Exchange доступен.

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)

См. также

| | | |

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

Подробнее