This website uses cookies to collect usage information in order to offer a better browsing experience. By browsing this site or by clicking on the "ACCEPT COOKIES" button you accept our Cookie Policy.

Duration: 5:30

Level: Intermediate

How to Code a Bracket Order in the Web API

To help limit loss and lock in a profit you can bracket an order with additional opposite-side orders.

A BUY order is bracketed by a high-side sell limit and a low-side sell stop order. A SELL order is bracketed by a high-side buy stop order and a low side buy limit order.

The endpoint /iserver/account/{accounted}/orders can be used to pass order request info in an Array to include the parent and child order(s).

A single customer order Id (cOID) is sent with the parent and the same value is specified in parentId for the child order(s).

Please be sure to authenticate first in order to resolve the below URLs.
For authentication details, visit https://interactivebrokers.github.io/cpwebapi/index.html#login

POST
https://localhost:5000/v1/api/iserver/account/{accountId}/orders

 

Request Body:

Array () [

string    acctId                                             
The specified Account order is placed for. This should be one of the accounts returned by /iserver/accounts.

string    conid                                             
contract identifier of the security you want to trade. You can find the conid with /iserver/secdef/search.

string    secType                                        
asset class formatted as conid:type, for example 265598:STK

string    cOID                                                
Customer Order Id. An arbitrary string that can be used to identify the order, e.g “my-fb-order”. The value must be unique for a 24h span.

string    parentId                                         
When placing brack orders, specify with the child order. Must be equal to the cOID of the parent.

string    orderType                                      
The type of order, example MKT (Market), LMT (Limit). Use the endpoint /info-and-rules to determine available orderType(s).

string    listingExchange                           
Optional. By default we use “SMART” routing. Use the endpoint: /portal/iserver/contract/{conid}/info, to determine valid_exchange.

boolean   outsideRTH                                  
Set to true if the order can be executed outside regular trading hours.

number    price                                                
For LMT this is the limit price. For STP this is the stop price

number    auxPrice                                         
For STOP_LIMIT orders this is the Stop Price.

string    side                                                 
SELL or BUY

string    ticker                                              
Contract Symbol

string    tif                                                     
The time-in-force of an order, example DAY. Use the endpoint /info-and-rules to determine tifTypes.

string    referrer                                           
Order reference

number    quantity                                         
the amount or shares of the order. Usually integer, for some special cases can be float numbers.

number    fxQty                                               
double number, this is the cash quantity field used for FX conversion order.

boolean   useAdaptive                                  
If true, the system will use the Adaptive Algo to submit the order, ref: https://www.interactivebrokers.com/en/index.php?f=19091

boolean   isCurrencyConversion               
Set to true for a FX conversion order.

string    allocationMethod                        
Set the allocation method when placing an order using an FA account for a group.

boolean  isClose                                           
Set to true if order is closing an existing position.

]
Response:

Array (){

string  id                                       
order_id = system generated order Id(s) for each order. local_order_id = cOID. parent_order_id = order_Id of the parent order.

Array of strings  message                         
if the message is a question, you must use the endpoint /iserver/reply/{replyid} to confirm the message and submit the order.
}

Example:

Request:

POST
https://localhost:5000/v1/api/iserver/account/DU***14/orders

 

Request Body:
{
  “orders”: [
  {
     “acctId”: “DU***14”,
     “conid”: “265598”,
     “cOID”: “66807300”,
     “orderType”: “LMT”,
     “listingExchange”: “SMART”,
     “outsideRTH”: true,
     “price”: 115.5,
     “side”: “BUY”,
     “ticker”: “AAPL”,
     “tif”: “DAY”,
     “referrer”: “ParentOrder”,
     “quantity”: 50,
     “useAdaptive”: false,
     “isClose”: false
  },
  {
     “acctId”: “DU***14”,
     “conid”: “265598”,
     “orderType”: “LMT”,
     “listingExchange”: “SMART”,
     “outsideRTH”: true,
     “price”: 125.5,
     “side”: “SELL”,
     “ticker”: “AAPL”,
     “tif”: “DAY”,
     “referrer”: “ProfitTakerOrder”,
     “quantity”: 50,
     “useAdaptive”: false,
     “isClose”: false,
     “parentId”: “66807300”,
  },
  {
     “acctId”: “DU***14”,
     “conid”: “265598”,
     “orderType”: “STP”,
     “listingExchange”: “SMART”,
     “outsideRTH”: false,
     “price”: 110.5,
     “side”: “SELL”,
     “ticker”: “AAPL”,
     “tif”: “DAY”,
     “referrer”: “StopLossOrder”,
     “quantity”: 50,
     “useAdaptive”: false,
     “isClose”: false,
     “parentId”: “66807300”,
  }
 ]
}

 

Response:
[
  {
    “order_id”: “1763237133”,
    “order_status”: “Submitted”,
    “local_order_id”: “66807300”
  },
  {
    “order_id”: “1763237135”,
     “order_status”: “PreSubmitted”,
    “parent_order_id”: “1763237133”
  }
]

If you have any further questions or issues creating a bracket order, please reach out to the API Group,

https://www.interactivebrokers.com/en/index.php?f=47047

Visit the IBKR API Center for Downloads, Resources, and Technical Details:
https://www.interactivebrokers.com/en/trading/ib-api.php


Disclosure: Interactive Brokers

The analysis in this material is provided for information only and is not and should not be construed as an offer to sell or the solicitation of an offer to buy any security. To the extent that this material discusses general market activity, industry or sector trends or other broad-based economic or political conditions, it should not be construed as research or investment advice. To the extent that it includes references to specific securities, commodities, currencies, or other instruments, those references do not constitute a recommendation by IBKR to buy, sell or hold such investments. This material does not and is not intended to take into account the particular financial conditions, investment objectives or requirements of individual customers. Before acting on this material, you should consider whether it is suitable for your particular circumstances and, as necessary, seek professional advice.

Supporting documentation for any claims and statistical information will be provided upon request.

Any stock, options or futures symbols displayed are for illustrative purposes only and are not intended to portray recommendations.

Disclosure: API Examples Discussed

Throughout the lesson, please keep in mind that the examples discussed are purely for technical demonstration purposes, and do not constitute trading advice. Also, it is important to remember that placing trades in a paper account is recommended before any live trading.

trading top
Translate »