В этом примере показано, как соединиться с 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
Перед отправкой порядка проверьте доступность сервера порядков биржи.
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