www.gusucode.com > trading工具箱matlab源码程序 > trading/tradingdemos/TTOrderSubmitExample.m

    %%X_TRADER Order Submission Example

%   Copyright 2011-2012 The MathWorks, Inc.

%Start or connect to X_TRADER
x = xtrdr;

%Create an instrument
x.createInstrument('Exchange','CME','Product','2F','ProdType','Future','Contract','Oct14','Alias','SubmitOrderInstrument3');

%Register event handler for order server
sExchange = x.Instrument.Exchange;
x.Gate.registerevent({'OnExchangeStateUpdate',@(varargin)ttorderserverstatus(varargin{:},sExchange)})

%Create OrderSet
x.createOrderSet;

%Set order set properties and detail level of order status events
x.OrderSet(1).EnableOrderRejectData = 1;
x.OrderSet(1).EnableOrderUpdateData = 1;
x.OrderSet(1).OrderStatusNotifyMode = 'ORD_NOTIFY_NORMAL';

%Set whether the order set checks self-imposed position limits when
%submitting an order
x.OrderSet(1).Set('NetLimits',false)

%Set events to get status of order
%The command
%
% events(x.OrderSet)
%
%shows the events associated with the OrderSet object
x.OrderSet(1).registerevent({'OnOrderFilled',@(varargin)ttorderevent(varargin{:},x)})
x.OrderSet(1).registerevent({'OnOrderRejected',@(varargin)ttorderevent(varargin{:},x)})
x.OrderSet(1).registerevent({'OnOrderSubmitted',@(varargin)ttorderevent(varargin{:},x)})
x.OrderSet(1).registerevent({'OnOrderDeleted',@(varargin)ttorderevent(varargin{:},x)})

%Enable send orders
x.OrderSet(1).Open(1);

%Build order profile with existing instrument 
orderProfile = x.createOrderProfile('Instrument',x.Instrument(1));

%The code
%
% orderProfile = x.createOrderProfile;
% orderProfile.Instrument = x.Instrument(1);
%
%performs the same task.

%Set customer default property
orderProfile.Customer = '<Default>';

%Set up order profile as a market order to buy 100 shares
orderProfile.Set('BuySell','Buy');
orderProfile.Set('Qty','225');
orderProfile.Set('OrderType','M');

%Limit order, set the ordertype and limit order price
%
% orderProfile.Set('OrderType','L');
% orderProfile.Set('Limit$','127000');

%Stop market order, set the order restriction to stop order and stop price
%
% orderProfile.Set('OrderType','M');
% orderProfile.Set('OrderRestr','S');
% orderProfile.Set('Stop$','129800');

%Stop limit order, set order restriction, type, limit price and stop price
%
% orderProfile.Set('OrderType','L');
% orderProfile.Set('OrderRestr','S');
% orderProfile.Set('Limit$','128000');
% orderProfile.Set('Stop$','127500');

%Check order server status before submitting order, added counter so that
%demo never gets stuck
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 = x.OrderSet(1).SendOrder(orderProfile);
  disp(['Quantity Sent: '  num2str(submittedQuantity)])
else
  disp('Order server is down.  Unable to submit order.')
end

%To delete an order
OrderObj = orderProfile.GetLastOrder;
if ~isempty(OrderObj)
  if ~OrderObj.IsNull
    OrderObj.DeleteOrder;
  end
end