В этом примере показано, как подключиться к 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)
close | createInstrument | createOrderProfile | createOrderSet | xtrdr