В этом примере показано, как подключиться к Trading Technologies ® X_TRADER® и создать рыночный заказ.
c = xtrdr;
Создайте инструмент для контракта CAISO NP15 EZ Gen Hub 5 МВт пиковых календарно-дневных LMP-фьючерсов в реальном времени со сроком годности август 2014 года на Чикагской товарной бирже.
createInstrument(c,'Exchange','CME','Product','2F',... 'ProdType','Future','Contract','Aug14',... 'Alias','SubmitOrderInstrument3')
Зарегистрируйте обработчик событий для проверки состояния сервера заказов.
sExchange = c.Instrument.Exchange;
c.Gate.registerevent({'OnExchangeStateUpdate', ...
@(varargin)ttorderserverstatus(varargin{:},sExchange)})Создайте пустой набор заказов. Затем задайте свойства набора порядка. Установка для первого свойства значения true (1) позволяет API X_TRADER отправлять уведомления об отклонении заказа. Установка для второго свойства значения true (1) позволяет API X_TRADER добавлять пары заказов для всех обновлений заказов в список отслеживания заказов в этом наборе заказов. Установка для третьего свойства значения ORD_NOTIFY_NORMAL устанавливает режим уведомления API X_TRADER для событий состояния заказа в нормальное состояние.
createOrderSet(c)
c.OrderSet(1).EnableOrderRejectData = 1;
c.OrderSet(1).EnableOrderUpdateData = 1;
c.OrderSet(1).OrderStatusNotifyMode = 'ORD_NOTIFY_NORMAL';c.OrderSet(1).Set('NetLimits',false)Зарегистрируйте обработчики событий для отслеживания событий, связанных со статусом заказа.
registerevent(c.OrderSet(1),{'OnOrderFilled',...
@(varargin)ttorderevent(varargin{:},c)})
registerevent(c.OrderSet(1),{'OnOrderRejected',...
@(varargin)ttorderevent(varargin{:},c)})
registerevent(c.OrderSet(1),{'OnOrderSubmitted',...
@(varargin)ttorderevent(varargin{:},c)})
registerevent(c.OrderSet(1),{'OnOrderDeleted',...
@(varargin)ttorderevent(varargin{:},c)})Откройте инструмент для торговли и включите API X_TRADER для получения информации о глубине рынка при открытии инструмента.
c.OrderSet(1).Open(1)
orderProfile = createOrderProfile(c,'Instrument',c.Instrument(1));Присвойте клиенту значения по умолчанию для торговли инструментом.
orderProfile.Customer = '<Default>';Настройте профиль заказа как рыночный заказ на покупку 225 акций.
orderProfile.Set('BuySell','Buy') orderProfile.Set('Qty','225') orderProfile.Set('OrderType','M')
nCounter = 1; while ~exist('bServerUp','var') && nCounter < 20 % bServerUp is created by ttorderserverstatus pause(1) nCounter = nCounter + 1; end
if exist('bServerUp','var') && bServerUp % Submit the order submittedQuantity = c.OrderSet(1).SendOrder(orderProfile); disp(['Quantity Sent: ' num2str(submittedQuantity)]) else disp('Order server is down. Unable to submit order.') end
API X_TRADER отправляет заказ бирже и возвращает количество контрактов, отправленных для договоров на основе партий, или количество потоков, отправленных для контрактов на основе потоков в аргументе вывода. submittedQuantity.
close(c)
close | createInstrument | createOrderProfile | createOrderSet | xtrdr