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