Create an Order Using IB Trader Workstation
Create a connection to the IB Trader Workstation℠ and create a market order based on historical and current data for a security. You can also create orders for a different instrument, such as a futures contract.
Before creating the connection, you must enter your credentials and run the IB Trader Workstation℠ application.
To run this example, you must have the Financial Toolbox™ installed.
Contents
Run IB Trader Workstation℠ Application
Ensure the IB Trader Workstation℠ application is running, and that API connections are enabled. Follow these steps in IB Trader Workstation℠.
- To open the Trader Workstation Configuration (Simulated Trading) dialog box, select File > Global Configuration.
- Select API > Settings.
- Ensure that the Enable ActiveX and Socket Clients check box is selected.
Connect to IB Trader Workstation℠
Connect to the IB Trader Workstation℠ and create connection ib using the local host and default port number 7496.
ib = ibtws('',7496);
When the Accept incoming connection attempt message appears in the IB Trader Workstation℠, click Yes.
Retrieve Historical and Current Data
Create the IB Trader Workstation℠ IContract object ibContract. This object specifies the security. Retrieve data for Microsoft® stock. Specifying SMART as the exchange lets Interactive Brokers® determine which venue to use for data retrieval. To clarify any ambiguity, set the primary exchange for the destination to NASDAQ. To retrieve dollar-denominated stock, set the currency type to USD. Setting currency type is useful when stocks are dual-listed or multi-listed across different jurisdictions.
ibContract = ib.Handle.createContract; ibContract.symbol = 'MSFT'; ibContract.secType = 'STK'; ibContract.exchange = 'SMART'; ibContract.primaryExchange = 'NASDAQ'; ibContract.currency = 'USD';
Define the date range for the last 20 business days, excluding today. To calculate the appropriate start and end dates, this code uses the daysadd function from Financial Toolbox™.
bizDayConvention = 13; % i.e. BUS/252
currentdate = today;
startDate = daysadd(currentdate,-20,bizDayConvention);
endDate = daysadd(currentdate,-1,bizDayConvention);
Retrieve historical data for the last 20 business days.
histTradeData = history(ib,ibContract,startDate,endDate);
The history function accepts additional parameters that let you obtain other historical data such as option-implied volatility, historical volatility, bid prices, ask prices, or midpoints. If you do not specify anything, last traded prices return by default.
Retrieve current price data from the contract.
currentData = getdata(ib,ibContract)
currentData = struct with fields: LAST_PRICE: 62.8500 LAST_SIZE: 1 VOLUME: 41273 BID_PRICE: 62.8400 BID_SIZE: 17 ASK_PRICE: 62.8600 ASK_SIZE: 12
Create Trade Market Order
The IB Trader Workstation℠ supports various order types, including basic types such as limit orders, stop orders, and market orders.
Create the IB Trader Workstation℠ Iorder object ibMktOrder. This object specifies the order. To buy shares, specify the action BUY. To specify buying 100 shares, set totalQuantity to 100. To create a market order, specify the order type as MKT.
ibMktOrder = ib.Handle.createOrder; ibMktOrder.action = 'BUY'; ibMktOrder.totalQuantity = 100; ibMktOrder.orderType = 'MKT';
Set a unique order identifier and send the order to Interactive Brokers®.
id = orderid(ib); result = createOrder(ib,ibContract,ibMktOrder,id)
result = struct with fields: STATUS: 'Submitted' FILLED: 0 REMAINING: 100 AVG_FILL_PRICE: 0 PERM_ID: '1621177315' PARENT_ID: 0 LAST_FILL_PRICE: 0 CLIENT_ID: 0 WHY_HELD: ''
Specify Different Instrument
You can trade various instruments using the IB Trader Workstation℠ API, including equities, futures, options, futures options, and foreign currencies.
ibFutures is the E-mini Standard and Poor's 500 futures contract on the CME Globex with a December 2013 expiry. Specify the symbol as ES, the security type as a futures contract FUT, the expiry as a YYYYMM date format, the exchange as GLOBEX, and the currency as USD.
ibFutures = ib.Handle.createContract; ibFutures.symbol = 'ES'; ibFutures.secType = 'FUT'; ibFutures.expiry = '201312'; % Dec 2013 ibFutures.exchange = 'GLOBEX'; ibFutures.currency = 'USD';
Retrieve futures data and send orders using the getdata and createOrder functions.
Close IB Trader Workstation℠ Connection
close(ib)