How to Code One-Cancels-All (OCA) Orders in Python

Articles From: Interactive Brokers
Website: Interactive Brokers

Python Order Type

Learn how to code order type parameters with IBKR API GitHub Guide!

In today’s feature, we explore the Python syntax for One-Cancels-All (OCA) orders. These orders are intended to help traders place multiple orders assigned to a group. As soon as one of the orders gets completed, our trading system will cancel the remaining orders. Learn the mechanics behind this via our OCA page:

Now let’s review how to code this in Python. Our GitHub Guide contains practical examples on how to program it using the One-Cancels-All group identifier, which is called OcaGroup:

def OneCancelsAll(ocaGroup:str, ocaOrders:ListOfOrder, ocaType:int):

for o in ocaOrders:

o.ocaGroup = ocaGroup
o.ocaType = ocaType

return ocaOrders

ocaOrders = [OrderSamples.LimitOrder(“BUY”, 1, 10), OrderSamples.LimitOrder(“BUY”, 1, 11),
OrderSamples.LimitOrder(“BUY”, 1, 12)]
OrderSamples.OneCancelsAll(“TestOCA_” + str(self.nextValidOrderId), ocaOrders, 2)
for o in ocaOrders:
self.placeOrder(self.nextOrderId(), ContractSamples.USStockAtSmart(), o)

The IBApi.Order.OcaType attribute plays an important role in how the remaining orders are processed after the first one gets executed. Visit our GitHub repository to review the list of valid values.

Stay tuned for more articles featuring IBKR order types. See the previous installments in this series: How to Code a Forex Order in Python and How to Code a Bracket Order in Python.

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.

The views and opinions expressed herein are those of the author and do not necessarily reflect the views of Interactive Brokers, its affiliates, or its employees.