Orders

Provides a full range of standard order types, as well as more advanced types and order lists.

class MarketOrder ( TraderId trader_id , StrategyId strategy_id , InstrumentId instrument_id , ClientOrderId client_order_id , OrderSide order_side , Quantity quantity , UUID4 init_id , uint64_t ts_init , TimeInForce time_in_force=TimeInForce.GTC , bool reduce_only=False , bool quote_quantity=False , ContingencyType contingency_type=ContingencyType.NO_CONTINGENCY , OrderListId order_list_id=None , list linked_order_ids=None , ClientOrderId parent_order_id=None , ExecAlgorithmId exec_algorithm_id=None , dict exec_algorithm_params=None , ClientOrderId exec_spawn_id=None , unicode tags=None )

Bases: Order

Represents a Market order.

A Market order is an order to BUY (or SELL) at the market bid or offer price. A market order may increase the likelihood of a fill and the speed of execution, but unlike the Limit order - a Market order provides no price protection and may fill at a price far lower/higher than the top of book bid/ask.

  • A Market-On-Open (MOO) order can be represented using a time in force of AT_THE_OPEN .

  • A Market-On-Close (MOC) order can be represented using a time in force of AT_THE_CLOSE .

Parameters :
  • trader_id ( TraderId ) – The trader ID associated with the order.

  • strategy_id ( StrategyId ) – The strategy ID associated with the order.

  • instrument_id ( InstrumentId ) – The order instrument ID.

  • client_order_id ( ClientOrderId ) – The client order ID.

  • order_side (OrderSide { BUY , SELL }) – The order side.

  • quantity ( Quantity ) – The order quantity (> 0).

  • init_id ( UUID4 ) – The order initialization event ID.

  • ts_init ( uint64_t ) – The UNIX timestamp (nanoseconds) when the object was initialized.

  • time_in_force (TimeInForce { GTC , IOC , FOK , DAY , AT_THE_OPEN , AT_THE_CLOSE }, default GTC ) – The order time in force.

  • reduce_only ( bool , default False ) – If the order carries the ‘reduce-only’ execution instruction.

  • quote_quantity ( bool , default False ) – If the order quantity is denominated in the quote currency.

  • contingency_type (ContingencyType, default NO_CONTINGENCY ) – The order contingency type.

  • order_list_id ( OrderListId , optional ) – The order list ID associated with the order.

  • linked_order_ids ( list [ ClientOrderId ] , optional ) – The order linked client order ID(s).

  • parent_order_id ( ClientOrderId , optional ) – The order parent client order ID.

  • exec_algorithm_id ( ExecAlgorithmId , optional ) – The execution algorithm ID for the order.

  • exec_algorithm_params ( dict [ str , Any ] , optional ) – The execution algorithm parameters for the order.

  • exec_spawn_id ( ClientOrderId , optional ) – The execution algorithm spawning primary client order ID.

  • tags ( str , optional ) – The custom user tags for the order. These are optional and can contain any arbitrary delimiter if required.

Raises :
  • ValueError – If order_side is NO_ORDER_SIDE .

  • ValueError – If quantity is not positive (> 0).

  • ValueError – If time_in_force is GTD .

References

https://www.interactivebrokers.com/en/trading/orders/market.php

account_id

The account ID associated with the order.

Returns :

AccountId or None

apply ( self , OrderEvent event ) void

Apply the given order event to the order.

Parameters :

event ( OrderEvent ) – The order event to apply.

Raises :
  • ValueError – If self.client_order_id is not equal to event.client_order_id .

  • ValueError – If self.venue_order_id and event.venue_order_id are both not None , and are not equal.

  • InvalidStateTrigger – If event is not a valid trigger from the current order.status .

  • KeyError – If event is OrderFilled and event.trade_id already applied to the order.

avg_px

The order average fill price.

Returns :

double

client_order_id

The client order ID.

Returns :

ClientOrderId

static closing_side ( PositionSide position_side ) OrderSide

Return the order side needed to close a position with the given side.

Parameters :

position_side (PositionSide { LONG , SHORT }) – The side of the position to close.

Returns :

OrderSide

Raises :

ValueError – If position_side is FLAT or invalid.

commissions ( self ) list

Return the total commissions generated by the order.

Returns :

list[Money]

contingency_type

The orders contingency type.

Returns :

ContingencyType

emulation_trigger

The order emulation trigger type.

Returns :

TriggerType

event_count

Return the count of events applied to the order.

Returns :

int

events

Return the order events.

Returns :

list[OrderEvent]

exec_algorithm_id

The execution algorithm ID for the order.

Returns :

ExecAlgorithmId or None

exec_algorithm_params

The execution algorithm parameters for the order.

Returns :

dict[str, Any] or None

exec_spawn_id

The execution algorithm spawning client order ID.

Returns :

ClientOrderId or None

filled_qty

The order total filled quantity.

Returns :

Quantity

static from_pyo3 ( pyo3_order )
has_price

Return whether the order has a price property.

Returns :

bool

has_trigger_price

Return whether the order has a trigger_price property.

Returns :

bool

info ( self ) unicode

Return a summary description of the order.

Returns :

str

init_event

Return the initialization event for the order.

Returns :

OrderInitialized

init_id

The event ID of the OrderInitialized event.

Returns :

UUID4

instrument_id

The order instrument ID.

Returns :

InstrumentId

is_active_local

Return whether the order is active and held in the local system.

An order is considered active local when its status is any of; - INITIALIZED - EMULATED - RELEASED

Returns :

bool

is_aggressive

Return whether the order is aggressive ( order_type is MARKET ).

Returns :

bool

is_buy

Return whether the order side is BUY .

Returns :

bool

is_canceled

Return whether current status is CANCELED .

Returns :

bool

is_child_order

Return whether the order has a parent order.

Returns :

bool

is_closed

Return whether the order is closed.

An order is considered closed when its status can no longer change. The possible statuses of closed orders include;

  • DENIED

  • REJECTED

  • CANCELED

  • EXPIRED

  • FILLED

Returns :

bool

is_contingency

Return whether the order has a contingency ( contingency_type is not NO_CONTINGENCY ).

Returns :

bool

is_emulated

Return whether the order is emulated and held in the local system.

Returns :

bool

is_inflight

Return whether the order is in-flight (order request sent to the trading venue).

An order is considered in-flight when its status is any of;

  • SUBMITTED

  • PENDING_UPDATE

  • PENDING_CANCEL

Returns :

bool

Warning

An emulated order is never considered in-flight.

is_open

Return whether the order is open at the trading venue.

An order is considered open when its status is any of;

  • ACCEPTED

  • TRIGGERED

  • PENDING_UPDATE

  • PENDING_CANCEL

  • PARTIALLY_FILLED

Returns :

bool

Warning

An emulated order is never considered open.

is_parent_order

Return whether the order has at least one child order.

Returns :

bool

is_passive

Return whether the order is passive ( order_type not MARKET ).

Returns :

bool

is_pending_cancel

Return whether the current status is PENDING_CANCEL .

Returns :

bool

is_pending_update

Return whether the current status is PENDING_UPDATE .

Returns :

bool

is_post_only

If the order will only provide liquidity (make a market).

Returns :

bool

is_primary

Return whether the order is the primary for an execution algorithm sequence.

Returns :

bool

is_quote_quantity

If the order quantity is denominated in the quote currency.

Returns :

bool

is_reduce_only

If the order carries the ‘reduce-only’ execution instruction.

Returns :

bool

is_sell

Return whether the order side is SELL .

Returns :

bool

is_spawned

Return whether the order was spawned as part of an execution algorithm sequence.

Returns :

bool

last_event

Return the last event applied to the order.

Returns :

OrderEvent

last_trade_id

The orders last trade match ID.

Returns :

TradeId or None

leaves_qty

The order total leaves quantity.

Returns :

Quantity

linked_order_ids

The orders linked client order ID(s).

Returns :

list[ClientOrderId] or None

liquidity_side

The order liquidity side.

Returns :

LiquiditySide

static opposite_side ( OrderSide side ) OrderSide

Return the opposite order side from the given side.

Parameters :

side (OrderSide { BUY , SELL }) – The original order side.

Returns :

OrderSide

Raises :

ValueError – If side is invalid.

order_list_id

The order list ID associated with the order.

Returns :

OrderListId or None

order_type

The order type.

Returns :

OrderType

parent_order_id

The parent client order ID.

Returns :

ClientOrderId or None

position_id

The position ID associated with the order.

Returns :

PositionId or None

quantity

The order quantity.

Returns :

Quantity

side

The order side.

Returns :

OrderSide

side_string ( self ) unicode

Return the orders side as a string.

Returns :

str

signed_decimal_qty ( self )

Return a signed decimal representation of the remaining quantity.

  • If the order is a BUY, the value is positive (e.g. Decimal(‘10.25’))

  • If the order is a SELL, the value is negative (e.g. Decimal(‘-10.25’))

Returns :

Decimal

slippage

The order total price slippage.

Returns :

double

status

Return the orders current status.

Returns :

OrderStatus

status_string ( self ) unicode

Return the orders current status as a string.

Returns :

str

strategy_id

The strategy ID associated with the order.

Returns :

StrategyId

symbol

Return the orders ticker symbol.

Returns :

Symbol

tags

The order custom user tags.

Returns :

str or None

time_in_force

The order time in force.

Returns :

TimeInForce

to_dict ( self ) dict

Return a dictionary representation of this object.

Returns :

dict[str, object]

trade_ids

Return the trade match IDs.

Returns :

list[TradeId]

trader_id

The trader ID associated with the position.

Returns :

TraderId

static transform_py ( Order order , uint64_t ts_init ) MarketOrder
trigger_instrument_id

The order emulation trigger instrument ID (will be instrument_id if None ).

Returns :

InstrumentId or None

ts_init

The UNIX timestamp (nanoseconds) when the object was initialized.

Returns :

uint64_t

ts_last

The UNIX timestamp (nanoseconds) when the last event occurred.

Returns :

uint64_t

type_string ( self ) unicode

Return the orders type as a string.

Returns :

str

venue

Return the orders trading venue.

Returns :

Venue

venue_order_id

The venue assigned order ID.

Returns :

VenueOrderId or None

venue_order_ids

Return the venue order IDs.

Returns :

list[VenueOrderId]

would_reduce_only ( self , PositionSide position_side , Quantity position_qty ) bool

Whether the current order would only reduce the given position if applied in full.

Parameters :
  • position_side (PositionSide { FLAT , LONG , SHORT }) – The side of the position to check against.

  • position_qty ( Quantity ) – The quantity of the position to check against.

Returns :

bool

class LimitOrder ( TraderId trader_id , StrategyId strategy_id , InstrumentId instrument_id , ClientOrderId client_order_id , OrderSide order_side , Quantity quantity , Price price , UUID4 init_id , uint64_t ts_init , TimeInForce time_in_force=TimeInForce.GTC , uint64_t expire_time_ns=0 , bool post_only=False , bool reduce_only=False , bool quote_quantity=False , Quantity display_qty=None , TriggerType emulation_trigger=TriggerType.NO_TRIGGER , InstrumentId trigger_instrument_id=None , ContingencyType contingency_type=ContingencyType.NO_CONTINGENCY , OrderListId order_list_id=None , list linked_order_ids=None , ClientOrderId parent_order_id=None , ExecAlgorithmId exec_algorithm_id=None , dict exec_algorithm_params=None , ClientOrderId exec_spawn_id=None , unicode tags=None )

Bases: Order

Represents a Limit order.

A Limit order is an order to BUY (or SELL) at a specified price or better. The Limit order ensures that if the order fills, it will not fill at a price less favorable than your limit price, but it does not guarantee a fill.

  • A Limit-On-Open (LOO) order can be represented using a time in force of AT_THE_OPEN .

  • A Limit-On-Close (LOC) order can be represented using a time in force of AT_THE_CLOSE .

Parameters :
  • trader_id ( TraderId ) – The trader ID associated with the order.

  • strategy_id ( StrategyId ) – The strategy ID associated with the order.

  • instrument_id ( InstrumentId ) – The order instrument ID.

  • client_order_id ( ClientOrderId ) – The client order ID.

  • order_side (OrderSide { BUY , SELL }) – The order side.

  • quantity ( Quantity ) – The order quantity (> 0).

  • price ( Price ) – The order limit price.

  • init_id ( UUID4 ) – The order initialization event ID.

  • ts_init ( uint64_t ) – The UNIX timestamp (nanoseconds) when the object was initialized.

  • time_in_force (TimeInForce { GTC , IOC , FOK , GTD , DAY , AT_THE_OPEN , AT_THE_CLOSE }, default GTC ) – The order time in force.

  • expire_time_ns ( uint64_t , default 0 ( no expiry ) ) – The UNIX timestamp (nanoseconds) when the order will expire.

  • post_only ( bool , default False ) – If the order will only provide liquidity (make a market).

  • reduce_only ( bool , default False ) – If the order carries the ‘reduce-only’ execution instruction.

  • quote_quantity ( bool , default False ) – If the order quantity is denominated in the quote currency.

  • display_qty ( Quantity , optional ) – The quantity of the order to display on the public book (iceberg).

  • emulation_trigger (EmulationTrigger, default NO_TRIGGER ) – The emulation trigger for the order.

  • trigger_instrument_id ( InstrumentId , optional ) – The emulation trigger instrument ID for the order (if None then will be the instrument_id ).

  • contingency_type (ContingencyType, default NO_CONTINGENCY ) – The order contingency type.

  • order_list_id ( OrderListId , optional ) – The order list ID associated with the order.

  • linked_order_ids ( list [ ClientOrderId ] , optional ) – The order linked client order ID(s).

  • parent_order_id ( ClientOrderId , optional ) – The order parent client order ID.

  • exec_algorithm_id ( ExecAlgorithmId , optional ) – The execution algorithm ID for the order.

  • exec_algorithm_params ( dict [ str , Any ] , optional ) – The execution algorithm parameters for the order.

  • exec_spawn_id ( ClientOrderId , optional ) – The execution algorithm spawning primary client order ID.

  • tags ( str , optional ) – The custom user tags for the order. These are optional and can contain any arbitrary delimiter if required.

Raises :
  • ValueError – If order_side is NO_ORDER_SIDE .

  • ValueError – If quantity is not positive (> 0).

  • ValueError – If time_in_force is GTD and expire_time_ns <= UNIX epoch.

  • ValueError – If display_qty is negative (< 0) or greater than quantity .

References

https://www.interactivebrokers.com/en/trading/orders/limit.php

account_id

The account ID associated with the order.

Returns :

AccountId or None

apply ( self , OrderEvent event ) void

Apply the given order event to the order.

Parameters :

event ( OrderEvent ) – The order event to apply.

Raises :
  • ValueError – If self.client_order_id is not equal to event.client_order_id .

  • ValueError – If self.venue_order_id and event.venue_order_id are both not None , and are not equal.

  • InvalidStateTrigger – If event is not a valid trigger from the current order.status .

  • KeyError – If event is OrderFilled and event.trade_id already applied to the order.

avg_px

The order average fill price.

Returns :

double

client_order_id

The client order ID.

Returns :

ClientOrderId

static closing_side ( PositionSide position_side ) OrderSide

Return the order side needed to close a position with the given side.

Parameters :

position_side (PositionSide { LONG , SHORT }) – The side of the position to close.

Returns :

OrderSide

Raises :

ValueError – If position_side is FLAT or invalid.

commissions ( self ) list

Return the total commissions generated by the order.

Returns :

list[Money]

contingency_type

The orders contingency type.

Returns :

ContingencyType

display_qty

The quantity of the order to display on the public book (iceberg).

Returns :

Quantity or None

emulation_trigger

The order emulation trigger type.

Returns :

TriggerType

event_count

Return the count of events applied to the order.

Returns :

int

events

Return the order events.

Returns :

list[OrderEvent]

exec_algorithm_id

The execution algorithm ID for the order.

Returns :

ExecAlgorithmId or None

exec_algorithm_params

The execution algorithm parameters for the order.

Returns :

dict[str, Any] or None

exec_spawn_id

The execution algorithm spawning client order ID.

Returns :

ClientOrderId or None

expire_time

Return the expire time for the order (UTC).

Returns :

datetime or None

expire_time_ns

The order expiration (UNIX epoch nanoseconds), zero for no expiration.

Returns :

uint64_t

filled_qty

The order total filled quantity.

Returns :

Quantity

static from_pyo3 ( pyo3_order )
has_price

Return whether the order has a price property.

Returns :

bool

has_trigger_price

Return whether the order has a trigger_price property.

Returns :

bool

info ( self ) unicode

Return a summary description of the order.

Returns :

str

init_event

Return the initialization event for the order.

Returns :

OrderInitialized

init_id

The event ID of the OrderInitialized event.

Returns :

UUID4

instrument_id

The order instrument ID.

Returns :

InstrumentId

is_active_local

Return whether the order is active and held in the local system.

An order is considered active local when its status is any of; - INITIALIZED - EMULATED - RELEASED

Returns :

bool

is_aggressive

Return whether the order is aggressive ( order_type is MARKET ).

Returns :

bool

is_buy

Return whether the order side is BUY .

Returns :

bool

is_canceled

Return whether current status is CANCELED .

Returns :

bool

is_child_order

Return whether the order has a parent order.

Returns :

bool

is_closed

Return whether the order is closed.

An order is considered closed when its status can no longer change. The possible statuses of closed orders include;

  • DENIED

  • REJECTED

  • CANCELED

  • EXPIRED

  • FILLED

Returns :

bool

is_contingency

Return whether the order has a contingency ( contingency_type is not NO_CONTINGENCY ).

Returns :

bool

is_emulated

Return whether the order is emulated and held in the local system.

Returns :

bool

is_inflight

Return whether the order is in-flight (order request sent to the trading venue).

An order is considered in-flight when its status is any of;

  • SUBMITTED

  • PENDING_UPDATE

  • PENDING_CANCEL

Returns :

bool

Warning

An emulated order is never considered in-flight.

is_open

Return whether the order is open at the trading venue.

An order is considered open when its status is any of;

  • ACCEPTED

  • TRIGGERED

  • PENDING_UPDATE

  • PENDING_CANCEL

  • PARTIALLY_FILLED

Returns :

bool

Warning

An emulated order is never considered open.

is_parent_order

Return whether the order has at least one child order.

Returns :

bool

is_passive

Return whether the order is passive ( order_type not MARKET ).

Returns :

bool

is_pending_cancel

Return whether the current status is PENDING_CANCEL .

Returns :

bool

is_pending_update

Return whether the current status is PENDING_UPDATE .

Returns :

bool

is_post_only

If the order will only provide liquidity (make a market).

Returns :

bool

is_primary

Return whether the order is the primary for an execution algorithm sequence.

Returns :

bool

is_quote_quantity

If the order quantity is denominated in the quote currency.

Returns :

bool

is_reduce_only

If the order carries the ‘reduce-only’ execution instruction.

Returns :

bool

is_sell

Return whether the order side is SELL .

Returns :

bool

is_spawned

Return whether the order was spawned as part of an execution algorithm sequence.

Returns :

bool

last_event

Return the last event applied to the order.

Returns :

OrderEvent

last_trade_id

The orders last trade match ID.

Returns :

TradeId or None

leaves_qty

The order total leaves quantity.

Returns :

Quantity

linked_order_ids

The orders linked client order ID(s).

Returns :

list[ClientOrderId] or None

liquidity_side

The order liquidity side.

Returns :

LiquiditySide

static opposite_side ( OrderSide side ) OrderSide

Return the opposite order side from the given side.

Parameters :

side (OrderSide { BUY , SELL }) – The original order side.

Returns :

OrderSide

Raises :

ValueError – If side is invalid.

order_list_id

The order list ID associated with the order.

Returns :

OrderListId or None

order_type

The order type.

Returns :

OrderType

parent_order_id

The parent client order ID.

Returns :

ClientOrderId or None

position_id

The position ID associated with the order.

Returns :

PositionId or None

price

The order price (LIMIT).

Returns :

Price

quantity

The order quantity.

Returns :

Quantity

side

The order side.

Returns :

OrderSide

side_string ( self ) unicode

Return the orders side as a string.

Returns :

str

signed_decimal_qty ( self )

Return a signed decimal representation of the remaining quantity.

  • If the order is a BUY, the value is positive (e.g. Decimal(‘10.25’))

  • If the order is a SELL, the value is negative (e.g. Decimal(‘-10.25’))

Returns :

Decimal

slippage

The order total price slippage.

Returns :

double

status

Return the orders current status.

Returns :

OrderStatus

status_string ( self ) unicode

Return the orders current status as a string.

Returns :

str

strategy_id

The strategy ID associated with the order.

Returns :

StrategyId

symbol

Return the orders ticker symbol.

Returns :

Symbol

tags

The order custom user tags.

Returns :

str or None

time_in_force

The order time in force.

Returns :

TimeInForce

to_dict ( self ) dict

Return a dictionary representation of this object.

Returns :

dict[str, object]

trade_ids

Return the trade match IDs.

Returns :

list[TradeId]

trader_id

The trader ID associated with the position.

Returns :

TraderId

static transform_py ( Order order , uint64_t ts_init , Price price=None ) LimitOrder
trigger_instrument_id

The order emulation trigger instrument ID (will be instrument_id if None ).

Returns :

InstrumentId or None

ts_init

The UNIX timestamp (nanoseconds) when the object was initialized.

Returns :

uint64_t

ts_last

The UNIX timestamp (nanoseconds) when the last event occurred.

Returns :

uint64_t

type_string ( self ) unicode

Return the orders type as a string.

Returns :

str

venue

Return the orders trading venue.

Returns :

Venue

venue_order_id

The venue assigned order ID.

Returns :

VenueOrderId or None

venue_order_ids

Return the venue order IDs.

Returns :

list[VenueOrderId]

would_reduce_only ( self , PositionSide position_side , Quantity position_qty ) bool

Whether the current order would only reduce the given position if applied in full.

Parameters :
  • position_side (PositionSide { FLAT , LONG , SHORT }) – The side of the position to check against.

  • position_qty ( Quantity ) – The quantity of the position to check against.

Returns :

bool

class StopMarketOrder ( TraderId trader_id , StrategyId strategy_id , InstrumentId instrument_id , ClientOrderId client_order_id , OrderSide order_side , Quantity quantity , Price trigger_price , TriggerType trigger_type , UUID4 init_id , uint64_t ts_init , TimeInForce time_in_force=TimeInForce.GTC , uint64_t expire_time_ns=0 , bool reduce_only=False , bool quote_quantity=False , TriggerType emulation_trigger=TriggerType.NO_TRIGGER , InstrumentId trigger_instrument_id=None , ContingencyType contingency_type=ContingencyType.NO_CONTINGENCY , OrderListId order_list_id=None , list linked_order_ids=None , ClientOrderId parent_order_id=None , ExecAlgorithmId exec_algorithm_id=None , dict exec_algorithm_params=None , ClientOrderId exec_spawn_id=None , unicode tags=None )

Bases: Order

Represents a Stop-Market conditional order.

A Stop-Market order is an instruction to submit a BUY (or SELL) market order if and when the specified stop trigger price is attained or penetrated. A Stop-Market order is not guaranteed a specific execution price and may execute significantly away from its stop price.

A SELL Stop-Market order is always placed below the current market price, and is typically used to limit a loss or protect a profit on a long position.

A BUY Stop-Market order is always placed above the current market price, and is typically used to limit a loss or protect a profit on a short position.

Parameters :
  • trader_id ( TraderId ) – The trader ID associated with the order.

  • strategy_id ( StrategyId ) – The strategy ID associated with the order.

  • instrument_id ( InstrumentId ) – The order instrument ID.

  • client_order_id ( ClientOrderId ) – The client order ID.

  • order_side (OrderSide { BUY , SELL }) – The order side.

  • quantity ( Quantity ) – The order quantity (> 0).

  • trigger_price ( Price ) – The order trigger price (STOP).

  • trigger_type ( TriggerType ) – The order trigger type.

  • init_id ( UUID4 ) – The order initialization event ID.

  • ts_init ( uint64_t ) – The UNIX timestamp (nanoseconds) when the object was initialized.

  • time_in_force (TimeInForce { GTC , IOC , FOK , GTD , DAY }, default GTC ) – The order time in force.

  • expire_time_ns ( uint64_t , default 0 ( no expiry ) ) – The UNIX timestamp (nanoseconds) when the order will expire.

  • reduce_only ( bool , default False ) – If the order carries the ‘reduce-only’ execution instruction.

  • quote_quantity ( bool , default False ) – If the order quantity is denominated in the quote currency.

  • emulation_trigger (TriggerType, default NO_TRIGGER ) – The order emulation trigger.

  • trigger_instrument_id ( InstrumentId , optional ) – The emulation trigger instrument ID for the order (if None then will be the instrument_id ).

  • contingency_type (ContingencyType, default NO_CONTINGENCY ) – The order contingency type.

  • order_list_id ( OrderListId , optional ) – The order list ID associated with the order.

  • linked_order_ids ( list [ ClientOrderId ] , optional ) – The order linked client order ID(s).

  • parent_order_id ( ClientOrderId , optional ) – The order parent client order ID.

  • exec_algorithm_id ( ExecAlgorithmId , optional ) – The execution algorithm ID for the order.

  • exec_algorithm_params ( dict [ str , Any ] , optional ) – The execution algorithm parameters for the order.

  • exec_spawn_id ( ClientOrderId , optional ) – The execution algorithm spawning primary client order ID.

  • tags ( str , optional ) – The custom user tags for the order. These are optional and can contain any arbitrary delimiter if required.

Raises :
  • ValueError – If order_side is NO_ORDER_SIDE .

  • ValueError – If quantity is not positive (> 0).

  • ValueError – If trigger_type is NO_TRIGGER .

  • ValueError – If time_in_force is AT_THE_OPEN or AT_THE_CLOSE .

  • ValueError – If time_in_force is GTD and expire_time_ns <= UNIX epoch.

References

https://www.interactivebrokers.com/en/trading/orders/stop.php

account_id

The account ID associated with the order.

Returns :

AccountId or None

apply ( self , OrderEvent event ) void

Apply the given order event to the order.

Parameters :

event ( OrderEvent ) – The order event to apply.

Raises :
  • ValueError – If self.client_order_id is not equal to event.client_order_id .

  • ValueError – If self.venue_order_id and event.venue_order_id are both not None , and are not equal.

  • InvalidStateTrigger – If event is not a valid trigger from the current order.status .

  • KeyError – If event is OrderFilled and event.trade_id already applied to the order.

avg_px

The order average fill price.

Returns :

double

client_order_id

The client order ID.

Returns :

ClientOrderId

static closing_side ( PositionSide position_side ) OrderSide

Return the order side needed to close a position with the given side.

Parameters :

position_side (PositionSide { LONG , SHORT }) – The side of the position to close.

Returns :

OrderSide

Raises :

ValueError – If position_side is FLAT or invalid.

commissions ( self ) list

Return the total commissions generated by the order.

Returns :

list[Money]

contingency_type

The orders contingency type.

Returns :

ContingencyType

emulation_trigger

The order emulation trigger type.

Returns :

TriggerType

event_count

Return the count of events applied to the order.

Returns :

int

events

Return the order events.

Returns :

list[OrderEvent]

exec_algorithm_id

The execution algorithm ID for the order.

Returns :

ExecAlgorithmId or None

exec_algorithm_params

The execution algorithm parameters for the order.

Returns :

dict[str, Any] or None

exec_spawn_id

The execution algorithm spawning client order ID.

Returns :

ClientOrderId or None

expire_time

Return the expire time for the order (UTC).

Returns :

datetime or None

expire_time_ns

The order expiration (UNIX epoch nanoseconds), zero for no expiration.

Returns :

uint64_t

filled_qty

The order total filled quantity.

Returns :

Quantity

has_price

Return whether the order has a price property.

Returns :

bool

has_trigger_price

Return whether the order has a trigger_price property.

Returns :

bool

info ( self ) unicode

Return a summary description of the order.

Returns :

str

init_event

Return the initialization event for the order.

Returns :

OrderInitialized

init_id

The event ID of the OrderInitialized event.

Returns :

UUID4

instrument_id

The order instrument ID.

Returns :

InstrumentId

is_active_local

Return whether the order is active and held in the local system.

An order is considered active local when its status is any of; - INITIALIZED - EMULATED - RELEASED

Returns :

bool

is_aggressive

Return whether the order is aggressive ( order_type is MARKET ).

Returns :

bool

is_buy

Return whether the order side is BUY .

Returns :

bool

is_canceled

Return whether current status is CANCELED .

Returns :

bool

is_child_order

Return whether the order has a parent order.

Returns :

bool

is_closed

Return whether the order is closed.

An order is considered closed when its status can no longer change. The possible statuses of closed orders include;

  • DENIED

  • REJECTED

  • CANCELED

  • EXPIRED

  • FILLED

Returns :

bool

is_contingency

Return whether the order has a contingency ( contingency_type is not NO_CONTINGENCY ).

Returns :

bool

is_emulated

Return whether the order is emulated and held in the local system.

Returns :

bool

is_inflight

Return whether the order is in-flight (order request sent to the trading venue).

An order is considered in-flight when its status is any of;

  • SUBMITTED

  • PENDING_UPDATE

  • PENDING_CANCEL

Returns :

bool

Warning

An emulated order is never considered in-flight.

is_open

Return whether the order is open at the trading venue.

An order is considered open when its status is any of;

  • ACCEPTED

  • TRIGGERED

  • PENDING_UPDATE

  • PENDING_CANCEL

  • PARTIALLY_FILLED

Returns :

bool

Warning

An emulated order is never considered open.

is_parent_order

Return whether the order has at least one child order.

Returns :

bool

is_passive

Return whether the order is passive ( order_type not MARKET ).

Returns :

bool

is_pending_cancel

Return whether the current status is PENDING_CANCEL .

Returns :

bool

is_pending_update

Return whether the current status is PENDING_UPDATE .

Returns :

bool

is_post_only

If the order will only provide liquidity (make a market).

Returns :

bool

is_primary

Return whether the order is the primary for an execution algorithm sequence.

Returns :

bool

is_quote_quantity

If the order quantity is denominated in the quote currency.

Returns :

bool

is_reduce_only

If the order carries the ‘reduce-only’ execution instruction.

Returns :

bool

is_sell

Return whether the order side is SELL .

Returns :

bool

is_spawned

Return whether the order was spawned as part of an execution algorithm sequence.

Returns :

bool

last_event

Return the last event applied to the order.

Returns :

OrderEvent

last_trade_id

The orders last trade match ID.

Returns :

TradeId or None

leaves_qty

The order total leaves quantity.

Returns :

Quantity

linked_order_ids

The orders linked client order ID(s).

Returns :

list[ClientOrderId] or None

liquidity_side

The order liquidity side.

Returns :

LiquiditySide

static opposite_side ( OrderSide side ) OrderSide

Return the opposite order side from the given side.

Parameters :

side (OrderSide { BUY , SELL }) – The original order side.

Returns :

OrderSide

Raises :

ValueError – If side is invalid.

order_list_id

The order list ID associated with the order.

Returns :

OrderListId or None

order_type

The order type.

Returns :

OrderType

parent_order_id

The parent client order ID.

Returns :

ClientOrderId or None

position_id

The position ID associated with the order.

Returns :

PositionId or None

quantity

The order quantity.

Returns :

Quantity

side

The order side.

Returns :

OrderSide

side_string ( self ) unicode

Return the orders side as a string.

Returns :

str

signed_decimal_qty ( self )

Return a signed decimal representation of the remaining quantity.

  • If the order is a BUY, the value is positive (e.g. Decimal(‘10.25’))

  • If the order is a SELL, the value is negative (e.g. Decimal(‘-10.25’))

Returns :

Decimal

slippage

The order total price slippage.

Returns :

double

status

Return the orders current status.

Returns :

OrderStatus

status_string ( self ) unicode

Return the orders current status as a string.

Returns :

str

strategy_id

The strategy ID associated with the order.

Returns :

StrategyId

symbol

Return the orders ticker symbol.

Returns :

Symbol

tags

The order custom user tags.

Returns :

str or None

time_in_force

The order time in force.

Returns :

TimeInForce

to_dict ( self ) dict

Return a dictionary representation of this object.

Returns :

dict[str, object]

trade_ids

Return the trade match IDs.

Returns :

list[TradeId]

trader_id

The trader ID associated with the position.

Returns :

TraderId

trigger_instrument_id

The order emulation trigger instrument ID (will be instrument_id if None ).

Returns :

InstrumentId or None

trigger_price

The order trigger price (STOP).

Returns :

Price

trigger_type

The trigger type for the order.

Returns :

TriggerType

ts_init

The UNIX timestamp (nanoseconds) when the object was initialized.

Returns :

uint64_t

ts_last

The UNIX timestamp (nanoseconds) when the last event occurred.

Returns :

uint64_t

type_string ( self ) unicode

Return the orders type as a string.

Returns :

str

venue

Return the orders trading venue.

Returns :

Venue

venue_order_id

The venue assigned order ID.

Returns :

VenueOrderId or None

venue_order_ids

Return the venue order IDs.

Returns :

list[VenueOrderId]

would_reduce_only ( self , PositionSide position_side , Quantity position_qty ) bool

Whether the current order would only reduce the given position if applied in full.

Parameters :
  • position_side (PositionSide { FLAT , LONG , SHORT }) – The side of the position to check against.

  • position_qty ( Quantity ) – The quantity of the position to check against.

Returns :

bool

class StopLimitOrder ( TraderId trader_id , StrategyId strategy_id , InstrumentId instrument_id , ClientOrderId client_order_id , OrderSide order_side , Quantity quantity , Price price , Price trigger_price , TriggerType trigger_type , UUID4 init_id , uint64_t ts_init , TimeInForce time_in_force=TimeInForce.GTC , uint64_t expire_time_ns=0 , bool post_only=False , bool reduce_only=False , bool quote_quantity=False , Quantity display_qty=None , TriggerType emulation_trigger=TriggerType.NO_TRIGGER , InstrumentId trigger_instrument_id=None , ContingencyType contingency_type=ContingencyType.NO_CONTINGENCY , OrderListId order_list_id=None , list linked_order_ids=None , ClientOrderId parent_order_id=None , ExecAlgorithmId exec_algorithm_id=None , dict exec_algorithm_params=None , ClientOrderId exec_spawn_id=None , unicode tags=None )

Bases: Order

Represents a Stop-Limit conditional order.

A Stop-Limit order is an instruction to submit a BUY (or SELL) limit order when the specified stop trigger price is attained or penetrated. The order has two basic components: the stop price and the limit price. When a trade has occurred at or through the stop price, the order becomes executable and enters the market as a limit order, which is an order to BUY (or SELL) at a specified price or better.

A Stop-Limit eliminates the price risk associated with a stop order where the execution price cannot be guaranteed, but exposes the trader to the risk that the order may never fill, even if the stop price is reached.

Parameters :
  • trader_id ( TraderId ) – The trader ID associated with the order.

  • strategy_id ( StrategyId ) – The strategy ID associated with the order.

  • instrument_id ( InstrumentId ) – The order instrument ID.

  • client_order_id ( ClientOrderId ) – The client order ID.

  • order_side (OrderSide { BUY , SELL }) – The order side.

  • quantity ( Quantity ) – The order quantity (> 0).

  • price ( Price ) – The order price (LIMIT).

  • trigger_price ( Price ) – The order trigger price (STOP).

  • trigger_type ( TriggerType ) – The order trigger type.

  • init_id ( UUID4 ) – The order initialization event ID.

  • ts_init ( uint64_t ) – The UNIX timestamp (nanoseconds) when the object was initialized.

  • time_in_force (TimeInForce { GTC , IOC , FOK , GTD , DAY }, default GTC ) – The order time in force.

  • expire_time_ns ( uint64_t , default 0 ( no expiry ) ) – The UNIX timestamp (nanoseconds) when the order will expire.

  • post_only ( bool , default False ) – If the LIMIT order will only provide liquidity (once triggered).

  • reduce_only ( bool , default False ) – If the LIMIT order carries the ‘reduce-only’ execution instruction.

  • quote_quantity ( bool , default False ) – If the order quantity is denominated in the quote currency.

  • display_qty ( Quantity , optional ) – The quantity of the LIMIT order to display on the public book (iceberg).

  • emulation_trigger (EmulationTrigger, default NO_TRIGGER ) – The emulation trigger for the order.

  • trigger_instrument_id ( InstrumentId , optional ) – The emulation trigger instrument ID for the order (if None then will be the instrument_id ).

  • contingency_type (ContingencyType, default NO_CONTINGENCY ) – The order contingency type.

  • order_list_id ( OrderListId , optional ) – The order list ID associated with the order.

  • linked_order_ids ( list [ ClientOrderId ] , optional ) – The order linked client order ID(s).

  • parent_order_id ( ClientOrderId , optional ) – The order parent client order ID.

  • exec_algorithm_id ( ExecAlgorithmId , optional ) – The execution algorithm ID for the order.

  • exec_algorithm_params ( dict [ str , Any ] , optional ) – The execution algorithm parameters for the order.

  • exec_spawn_id ( ClientOrderId , optional ) – The execution algorithm spawning primary client order ID.

  • tags ( str , optional ) – The custom user tags for the order. These are optional and can contain any arbitrary delimiter if required.

Raises :
  • ValueError – If order_side is NO_ORDER_SIDE .

  • ValueError – If quantity is not positive (> 0).

  • ValueError – If trigger_type is NO_TRIGGER .

  • ValueError – If time_in_force is AT_THE_OPEN or AT_THE_CLOSE .

  • ValueError – If time_in_force is GTD and expire_time_ns <= UNIX epoch.

  • ValueError – If display_qty is negative (< 0) or greater than quantity .

References

https://www.interactivebrokers.com/en/trading/orders/stop-limit.php

account_id

The account ID associated with the order.

Returns :

AccountId or None

apply ( self , OrderEvent event ) void

Apply the given order event to the order.

Parameters :

event ( OrderEvent ) – The order event to apply.

Raises :
  • ValueError – If self.client_order_id is not equal to event.client_order_id .

  • ValueError – If self.venue_order_id and event.venue_order_id are both not None , and are not equal.

  • InvalidStateTrigger – If event is not a valid trigger from the current order.status .

  • KeyError – If event is OrderFilled and event.trade_id already applied to the order.

avg_px

The order average fill price.

Returns :

double

client_order_id

The client order ID.

Returns :

ClientOrderId

static closing_side ( PositionSide position_side ) OrderSide

Return the order side needed to close a position with the given side.

Parameters :

position_side (PositionSide { LONG , SHORT }) – The side of the position to close.

Returns :

OrderSide

Raises :

ValueError – If position_side is FLAT or invalid.

commissions ( self ) list

Return the total commissions generated by the order.

Returns :

list[Money]

contingency_type

The orders contingency type.

Returns :

ContingencyType

display_qty

The quantity of the LIMIT order to display on the public book (iceberg).

Returns :

Quantity or None

emulation_trigger

The order emulation trigger type.

Returns :

TriggerType

event_count

Return the count of events applied to the order.

Returns :

int

events

Return the order events.

Returns :

list[OrderEvent]

exec_algorithm_id

The execution algorithm ID for the order.

Returns :

ExecAlgorithmId or None

exec_algorithm_params

The execution algorithm parameters for the order.

Returns :

dict[str, Any] or None

exec_spawn_id

The execution algorithm spawning client order ID.

Returns :

ClientOrderId or None

expire_time

Return the expire time for the order (UTC).

Returns :

datetime or None

expire_time_ns

The order expiration (UNIX epoch nanoseconds), zero for no expiration.

Returns :

uint64_t

filled_qty

The order total filled quantity.

Returns :

Quantity

static from_pyo3 ( pyo3_order )
has_price

Return whether the order has a price property.

Returns :

bool

has_trigger_price

Return whether the order has a trigger_price property.

Returns :

bool

info ( self ) unicode

Return a summary description of the order.

Returns :

str

init_event

Return the initialization event for the order.

Returns :

OrderInitialized

init_id

The event ID of the OrderInitialized event.

Returns :

UUID4

instrument_id

The order instrument ID.

Returns :

InstrumentId

is_active_local

Return whether the order is active and held in the local system.

An order is considered active local when its status is any of; - INITIALIZED - EMULATED - RELEASED

Returns :

bool

is_aggressive

Return whether the order is aggressive ( order_type is MARKET ).

Returns :

bool

is_buy

Return whether the order side is BUY .

Returns :

bool

is_canceled

Return whether current status is CANCELED .

Returns :

bool

is_child_order

Return whether the order has a parent order.

Returns :

bool

is_closed

Return whether the order is closed.

An order is considered closed when its status can no longer change. The possible statuses of closed orders include;

  • DENIED

  • REJECTED

  • CANCELED

  • EXPIRED

  • FILLED

Returns :

bool

is_contingency

Return whether the order has a contingency ( contingency_type is not NO_CONTINGENCY ).

Returns :

bool

is_emulated

Return whether the order is emulated and held in the local system.

Returns :

bool

is_inflight

Return whether the order is in-flight (order request sent to the trading venue).

An order is considered in-flight when its status is any of;

  • SUBMITTED

  • PENDING_UPDATE

  • PENDING_CANCEL

Returns :

bool

Warning

An emulated order is never considered in-flight.

is_open

Return whether the order is open at the trading venue.

An order is considered open when its status is any of;

  • ACCEPTED

  • TRIGGERED

  • PENDING_UPDATE

  • PENDING_CANCEL

  • PARTIALLY_FILLED

Returns :

bool

Warning

An emulated order is never considered open.

is_parent_order

Return whether the order has at least one child order.

Returns :

bool

is_passive

Return whether the order is passive ( order_type not MARKET ).

Returns :

bool

is_pending_cancel

Return whether the current status is PENDING_CANCEL .

Returns :

bool

is_pending_update

Return whether the current status is PENDING_UPDATE .

Returns :

bool

is_post_only

If the order will only provide liquidity (make a market).

Returns :

bool

is_primary

Return whether the order is the primary for an execution algorithm sequence.

Returns :

bool

is_quote_quantity

If the order quantity is denominated in the quote currency.

Returns :

bool

is_reduce_only

If the order carries the ‘reduce-only’ execution instruction.

Returns :

bool

is_sell

Return whether the order side is SELL .

Returns :

bool

is_spawned

Return whether the order was spawned as part of an execution algorithm sequence.

Returns :

bool

is_triggered

If the order has been triggered.

Returns :

bool

last_event

Return the last event applied to the order.

Returns :

OrderEvent

last_trade_id

The orders last trade match ID.

Returns :

TradeId or None

leaves_qty

The order total leaves quantity.

Returns :

Quantity

linked_order_ids

The orders linked client order ID(s).

Returns :

list[ClientOrderId] or None

liquidity_side

The order liquidity side.

Returns :

LiquiditySide

static opposite_side ( OrderSide side ) OrderSide

Return the opposite order side from the given side.

Parameters :

side (OrderSide { BUY , SELL }) – The original order side.

Returns :

OrderSide

Raises :

ValueError – If side is invalid.

order_list_id

The order list ID associated with the order.

Returns :

OrderListId or None

order_type

The order type.

Returns :

OrderType

parent_order_id

The parent client order ID.

Returns :

ClientOrderId or None

position_id

The position ID associated with the order.

Returns :

PositionId or None

price

The order price (LIMIT).

Returns :

Price

quantity

The order quantity.

Returns :

Quantity

side

The order side.

Returns :

OrderSide

side_string ( self ) unicode

Return the orders side as a string.

Returns :

str

signed_decimal_qty ( self )

Return a signed decimal representation of the remaining quantity.

  • If the order is a BUY, the value is positive (e.g. Decimal(‘10.25’))

  • If the order is a SELL, the value is negative (e.g. Decimal(‘-10.25’))

Returns :

Decimal

slippage

The order total price slippage.

Returns :

double

status

Return the orders current status.

Returns :

OrderStatus

status_string ( self ) unicode

Return the orders current status as a string.

Returns :

str

strategy_id

The strategy ID associated with the order.

Returns :

StrategyId

symbol

Return the orders ticker symbol.

Returns :

Symbol

tags

The order custom user tags.

Returns :

str or None

time_in_force

The order time in force.

Returns :

TimeInForce

to_dict ( self ) dict

Return a dictionary representation of this object.

Returns :

dict[str, object]

trade_ids

Return the trade match IDs.

Returns :

list[TradeId]

trader_id

The trader ID associated with the position.

Returns :

TraderId

trigger_instrument_id

The order emulation trigger instrument ID (will be instrument_id if None ).

Returns :

InstrumentId or None

trigger_price

The order trigger price (STOP).

Returns :

Price

trigger_type

The trigger type for the order.

Returns :

TriggerType

ts_init

The UNIX timestamp (nanoseconds) when the object was initialized.

Returns :

uint64_t

ts_last

The UNIX timestamp (nanoseconds) when the last event occurred.

Returns :

uint64_t

ts_triggered

The UNIX timestamp (nanoseconds) when the order was triggered (0 if not triggered).

Returns :

uint64_t

type_string ( self ) unicode

Return the orders type as a string.

Returns :

str

venue

Return the orders trading venue.

Returns :

Venue

venue_order_id

The venue assigned order ID.

Returns :

VenueOrderId or None

venue_order_ids

Return the venue order IDs.

Returns :

list[VenueOrderId]

would_reduce_only ( self , PositionSide position_side , Quantity position_qty ) bool

Whether the current order would only reduce the given position if applied in full.

Parameters :
  • position_side (PositionSide { FLAT , LONG , SHORT }) – The side of the position to check against.

  • position_qty ( Quantity ) – The quantity of the position to check against.

Returns :

bool

class MarketToLimitOrder ( TraderId trader_id , StrategyId strategy_id , InstrumentId instrument_id , ClientOrderId client_order_id , OrderSide order_side , Quantity quantity , UUID4 init_id , uint64_t ts_init , TimeInForce time_in_force=TimeInForce.GTC , uint64_t expire_time_ns=0 , bool reduce_only=False , bool quote_quantity=False , Quantity display_qty=None , ContingencyType contingency_type=ContingencyType.NO_CONTINGENCY , OrderListId order_list_id=None , list linked_order_ids=None , ClientOrderId parent_order_id=None , ExecAlgorithmId exec_algorithm_id=None , dict exec_algorithm_params=None , ClientOrderId exec_spawn_id=None , unicode tags=None )

Bases: Order

Represents a Market-To-Limit (MTL) order.

A Market-to-Limit (MTL) order is submitted as a market order to execute at the current best market price. If the order is only partially filled, the remainder of the order is canceled and re-submitted as a Limit order with the limit price equal to the price at which the filled portion of the order executed.

Parameters :
  • trader_id ( TraderId ) – The trader ID associated with the order.

  • strategy_id ( StrategyId ) – The strategy ID associated with the order.

  • instrument_id ( InstrumentId ) – The order instrument ID.

  • client_order_id ( ClientOrderId ) – The client order ID.

  • order_side (OrderSide { BUY , SELL }) – The order side.

  • quantity ( Quantity ) – The order quantity (> 0).

  • init_id ( UUID4 ) – The order initialization event ID.

  • ts_init ( uint64_t ) – The UNIX timestamp (nanoseconds) when the object was initialized.

  • time_in_force (TimeInForce { GTC , IOC , FOK , GTD , DAY }, default GTC ) – The order time in force.

  • expire_time_ns ( uint64_t , default 0 ( no expiry ) ) – The UNIX timestamp (nanoseconds) when the order will expire.

  • reduce_only ( bool , default False ) – If the order carries the ‘reduce-only’ execution instruction.

  • quote_quantity ( bool , default False ) – If the order quantity is denominated in the quote currency.

  • display_qty ( Quantity , optional ) – The quantity of the limit order to display on the public book (iceberg).

  • contingency_type (ContingencyType, default NO_CONTINGENCY ) – The order contingency type.

  • order_list_id ( OrderListId , optional ) – The order list ID associated with the order.

  • linked_order_ids ( list [ ClientOrderId ] , optional ) – The order linked client order ID(s).

  • parent_order_id ( ClientOrderId , optional ) – The order parent client order ID.

  • exec_algorithm_id ( ExecAlgorithmId , optional ) – The execution algorithm ID for the order.

  • exec_algorithm_params ( dict [ str , Any ] , optional ) – The execution algorithm parameters for the order.

  • exec_spawn_id ( ClientOrderId , optional ) – The execution algorithm spawning primary client order ID.

  • tags ( str , optional ) – The custom user tags for the order. These are optional and can contain any arbitrary delimiter if required.

Raises :
  • ValueError – If order_side is NO_ORDER_SIDE .

  • ValueError – If quantity is not positive (> 0).

  • ValueError – If time_in_force is AT_THE_OPEN or AT_THE_CLOSE .

References

https://www.interactivebrokers.com/en/trading/orders/mtl.php

account_id

The account ID associated with the order.

Returns :

AccountId or None

apply ( self , OrderEvent event ) void

Apply the given order event to the order.

Parameters :

event ( OrderEvent ) – The order event to apply.

Raises :
  • ValueError – If self.client_order_id is not equal to event.client_order_id .

  • ValueError – If self.venue_order_id and event.venue_order_id are both not None , and are not equal.

  • InvalidStateTrigger – If event is not a valid trigger from the current order.status .

  • KeyError – If event is OrderFilled and event.trade_id already applied to the order.

avg_px

The order average fill price.

Returns :

double

client_order_id

The client order ID.

Returns :

ClientOrderId

static closing_side ( PositionSide position_side ) OrderSide

Return the order side needed to close a position with the given side.

Parameters :

position_side (PositionSide { LONG , SHORT }) – The side of the position to close.

Returns :

OrderSide

Raises :

ValueError – If position_side is FLAT or invalid.

commissions ( self ) list

Return the total commissions generated by the order.

Returns :

list[Money]

contingency_type

The orders contingency type.

Returns :

ContingencyType

display_qty

The quantity of the limit order to display on the public book (iceberg).

Returns :

Quantity or None

emulation_trigger

The order emulation trigger type.

Returns :

TriggerType

event_count

Return the count of events applied to the order.

Returns :

int

events

Return the order events.

Returns :

list[OrderEvent]

exec_algorithm_id

The execution algorithm ID for the order.

Returns :

ExecAlgorithmId or None

exec_algorithm_params

The execution algorithm parameters for the order.

Returns :

dict[str, Any] or None

exec_spawn_id

The execution algorithm spawning client order ID.

Returns :

ClientOrderId or None

expire_time

Return the expire time for the order (UTC).

Returns :

datetime or None

expire_time_ns

The order expiration (UNIX epoch nanoseconds), zero for no expiration.

Returns :

uint64_t

filled_qty

The order total filled quantity.

Returns :

Quantity

has_price

Return whether the order has a price property.

Returns :

bool

has_trigger_price

Return whether the order has a trigger_price property.

Returns :

bool

info ( self ) unicode

Return a summary description of the order.

Returns :

str

init_event

Return the initialization event for the order.

Returns :

OrderInitialized

init_id

The event ID of the OrderInitialized event.

Returns :

UUID4

instrument_id

The order instrument ID.

Returns :

InstrumentId

is_active_local

Return whether the order is active and held in the local system.

An order is considered active local when its status is any of; - INITIALIZED - EMULATED - RELEASED

Returns :

bool

is_aggressive

Return whether the order is aggressive ( order_type is MARKET ).

Returns :

bool

is_buy

Return whether the order side is BUY .

Returns :

bool

is_canceled

Return whether current status is CANCELED .

Returns :

bool

is_child_order

Return whether the order has a parent order.

Returns :

bool

is_closed

Return whether the order is closed.

An order is considered closed when its status can no longer change. The possible statuses of closed orders include;

  • DENIED

  • REJECTED

  • CANCELED

  • EXPIRED

  • FILLED

Returns :

bool

is_contingency

Return whether the order has a contingency ( contingency_type is not NO_CONTINGENCY ).

Returns :

bool

is_emulated

Return whether the order is emulated and held in the local system.

Returns :

bool

is_inflight

Return whether the order is in-flight (order request sent to the trading venue).

An order is considered in-flight when its status is any of;

  • SUBMITTED

  • PENDING_UPDATE

  • PENDING_CANCEL

Returns :

bool

Warning

An emulated order is never considered in-flight.

is_open

Return whether the order is open at the trading venue.

An order is considered open when its status is any of;

  • ACCEPTED

  • TRIGGERED

  • PENDING_UPDATE

  • PENDING_CANCEL

  • PARTIALLY_FILLED

Returns :

bool

Warning

An emulated order is never considered open.

is_parent_order

Return whether the order has at least one child order.

Returns :

bool

is_passive

Return whether the order is passive ( order_type not MARKET ).

Returns :

bool

is_pending_cancel

Return whether the current status is PENDING_CANCEL .

Returns :

bool

is_pending_update

Return whether the current status is PENDING_UPDATE .

Returns :

bool

is_post_only

If the order will only provide liquidity (make a market).

Returns :

bool

is_primary

Return whether the order is the primary for an execution algorithm sequence.

Returns :

bool

is_quote_quantity

If the order quantity is denominated in the quote currency.

Returns :

bool

is_reduce_only

If the order carries the ‘reduce-only’ execution instruction.

Returns :

bool

is_sell

Return whether the order side is SELL .

Returns :

bool

is_spawned

Return whether the order was spawned as part of an execution algorithm sequence.

Returns :

bool

last_event

Return the last event applied to the order.

Returns :

OrderEvent

last_trade_id

The orders last trade match ID.

Returns :

TradeId or None

leaves_qty

The order total leaves quantity.

Returns :

Quantity

linked_order_ids

The orders linked client order ID(s).

Returns :

list[ClientOrderId] or None

liquidity_side

The order liquidity side.

Returns :

LiquiditySide

static opposite_side ( OrderSide side ) OrderSide

Return the opposite order side from the given side.

Parameters :

side (OrderSide { BUY , SELL }) – The original order side.

Returns :

OrderSide

Raises :

ValueError – If side is invalid.

order_list_id

The order list ID associated with the order.

Returns :

OrderListId or None

order_type

The order type.

Returns :

OrderType

parent_order_id

The parent client order ID.

Returns :

ClientOrderId or None

position_id

The position ID associated with the order.

Returns :

PositionId or None

price

The order price (LIMIT).

Returns :

Price or None

quantity

The order quantity.

Returns :

Quantity

side

The order side.

Returns :

OrderSide

side_string ( self ) unicode

Return the orders side as a string.

Returns :

str

signed_decimal_qty ( self )

Return a signed decimal representation of the remaining quantity.

  • If the order is a BUY, the value is positive (e.g. Decimal(‘10.25’))

  • If the order is a SELL, the value is negative (e.g. Decimal(‘-10.25’))

Returns :

Decimal

slippage

The order total price slippage.

Returns :

double

status

Return the orders current status.

Returns :

OrderStatus

status_string ( self ) unicode

Return the orders current status as a string.

Returns :

str

strategy_id

The strategy ID associated with the order.

Returns :

StrategyId

symbol

Return the orders ticker symbol.

Returns :

Symbol

tags

The order custom user tags.

Returns :

str or None

time_in_force

The order time in force.

Returns :

TimeInForce

to_dict ( self ) dict

Return a dictionary representation of this object.

Returns :

dict[str, object]

trade_ids

Return the trade match IDs.

Returns :

list[TradeId]

trader_id

The trader ID associated with the position.

Returns :

TraderId

trigger_instrument_id

The order emulation trigger instrument ID (will be instrument_id if None ).

Returns :

InstrumentId or None

ts_init

The UNIX timestamp (nanoseconds) when the object was initialized.

Returns :

uint64_t

ts_last

The UNIX timestamp (nanoseconds) when the last event occurred.

Returns :

uint64_t

type_string ( self ) unicode

Return the orders type as a string.

Returns :

str

venue

Return the orders trading venue.

Returns :

Venue

venue_order_id

The venue assigned order ID.

Returns :

VenueOrderId or None

venue_order_ids

Return the venue order IDs.

Returns :

list[VenueOrderId]

would_reduce_only ( self , PositionSide position_side , Quantity position_qty ) bool

Whether the current order would only reduce the given position if applied in full.

Parameters :
  • position_side (PositionSide { FLAT , LONG , SHORT }) – The side of the position to check against.

  • position_qty ( Quantity ) – The quantity of the position to check against.

Returns :

bool

class MarketIfTouchedOrder ( TraderId trader_id , StrategyId strategy_id , InstrumentId instrument_id , ClientOrderId client_order_id , OrderSide order_side , Quantity quantity , Price trigger_price , TriggerType trigger_type , UUID4 init_id , uint64_t ts_init , TimeInForce time_in_force=TimeInForce.GTC , uint64_t expire_time_ns=0 , bool reduce_only=False , bool quote_quantity=False , TriggerType emulation_trigger=TriggerType.NO_TRIGGER , InstrumentId trigger_instrument_id=None , ContingencyType contingency_type=ContingencyType.NO_CONTINGENCY , OrderListId order_list_id=None , list linked_order_ids=None , ClientOrderId parent_order_id=None , ExecAlgorithmId exec_algorithm_id=None , dict exec_algorithm_params=None , ClientOrderId exec_spawn_id=None , unicode tags=None )

Bases: Order

Represents a Market-If-Touched (MIT) conditional order.

A Market-If-Touched (MIT) is an order to BUY (or SELL) an instrument below (or above) the market. This order is held in the system until the trigger price is touched, and is then submitted as a market order. An MIT order is similar to a Stop-Order, except that an MIT SELL order is placed above the current market price, and a stop SELL order is placed below.

Parameters :
  • trader_id ( TraderId ) – The trader ID associated with the order.

  • strategy_id ( StrategyId ) – The strategy ID associated with the order.

  • instrument_id ( InstrumentId ) – The order instrument ID.

  • client_order_id ( ClientOrderId ) – The client order ID.

  • order_side (OrderSide { BUY , SELL }) – The order side.

  • quantity ( Quantity ) – The order quantity (> 0).

  • trigger_price ( Price ) – The order trigger price (STOP).

  • trigger_type ( TriggerType ) – The order trigger type.

  • init_id ( UUID4 ) – The order initialization event ID.

  • ts_init ( uint64_t ) – The UNIX timestamp (nanoseconds) when the object was initialized.

  • time_in_force (TimeInForce { GTC , IOC , FOK , GTD , DAY }, default GTC ) – The order time in force.

  • expire_time_ns ( uint64_t , default 0 ( no expiry ) ) – The UNIX timestamp (nanoseconds) when the order will expire.

  • reduce_only ( bool , default False ) – If the order carries the ‘reduce-only’ execution instruction.

  • quote_quantity ( bool , default False ) – If the order quantity is denominated in the quote currency.

  • emulation_trigger (EmulationTrigger, default NO_TRIGGER ) – The emulation trigger for the order.

  • trigger_instrument_id ( InstrumentId , optional ) – The emulation trigger instrument ID for the order (if None then will be the instrument_id ).

  • contingency_type (ContingencyType, default NO_CONTINGENCY ) – The order contingency type.

  • order_list_id ( OrderListId , optional ) – The order list ID associated with the order.

  • linked_order_ids ( list [ ClientOrderId ] , optional ) – The order linked client order ID(s).

  • parent_order_id ( ClientOrderId , optional ) – The order parent client order ID.

  • exec_algorithm_id ( ExecAlgorithmId , optional ) – The execution algorithm ID for the order.

  • exec_algorithm_params ( dict [ str , Any ] , optional ) – The execution algorithm parameters for the order.

  • exec_spawn_id ( ClientOrderId , optional ) – The execution algorithm spawning primary client order ID.

  • tags ( str , optional ) – The custom user tags for the order. These are optional and can contain any arbitrary delimiter if required.

Raises :
  • ValueError – If order_side is NO_ORDER_SIDE .

  • ValueError – If quantity is not positive (> 0).

  • ValueError – If trigger_type is NO_TRIGGER .

  • ValueError – If time_in_force is AT_THE_OPEN or AT_THE_CLOSE .

  • ValueError – If time_in_force is GTD and expire_time_ns <= UNIX epoch.

References

https://www.interactivebrokers.com/en/trading/orders/mit.php

account_id

The account ID associated with the order.

Returns :

AccountId or None

apply ( self , OrderEvent event ) void

Apply the given order event to the order.

Parameters :

event ( OrderEvent ) – The order event to apply.

Raises :
  • ValueError – If self.client_order_id is not equal to event.client_order_id .

  • ValueError – If self.venue_order_id and event.venue_order_id are both not None , and are not equal.

  • InvalidStateTrigger – If event is not a valid trigger from the current order.status .

  • KeyError – If event is OrderFilled and event.trade_id already applied to the order.

avg_px

The order average fill price.

Returns :

double

client_order_id

The client order ID.

Returns :

ClientOrderId

static closing_side ( PositionSide position_side ) OrderSide

Return the order side needed to close a position with the given side.

Parameters :

position_side (PositionSide { LONG , SHORT }) – The side of the position to close.

Returns :

OrderSide

Raises :

ValueError – If position_side is FLAT or invalid.

commissions ( self ) list

Return the total commissions generated by the order.

Returns :

list[Money]

contingency_type

The orders contingency type.

Returns :

ContingencyType

emulation_trigger

The order emulation trigger type.

Returns :

TriggerType

event_count

Return the count of events applied to the order.

Returns :

int

events

Return the order events.

Returns :

list[OrderEvent]

exec_algorithm_id

The execution algorithm ID for the order.

Returns :

ExecAlgorithmId or None

exec_algorithm_params

The execution algorithm parameters for the order.

Returns :

dict[str, Any] or None

exec_spawn_id

The execution algorithm spawning client order ID.

Returns :

ClientOrderId or None

expire_time

Return the expire time for the order (UTC).

Returns :

datetime or None

expire_time_ns

The order expiration (UNIX epoch nanoseconds), zero for no expiration.

Returns :

uint64_t

filled_qty

The order total filled quantity.

Returns :

Quantity

has_price

Return whether the order has a price property.

Returns :

bool

has_trigger_price

Return whether the order has a trigger_price property.

Returns :

bool

info ( self ) unicode

Return a summary description of the order.

Returns :

str

init_event

Return the initialization event for the order.

Returns :

OrderInitialized

init_id

The event ID of the OrderInitialized event.

Returns :

UUID4

instrument_id

The order instrument ID.

Returns :

InstrumentId

is_active_local

Return whether the order is active and held in the local system.

An order is considered active local when its status is any of; - INITIALIZED - EMULATED - RELEASED

Returns :

bool

is_aggressive

Return whether the order is aggressive ( order_type is MARKET ).

Returns :

bool

is_buy

Return whether the order side is BUY .

Returns :

bool

is_canceled

Return whether current status is CANCELED .

Returns :

bool

is_child_order

Return whether the order has a parent order.

Returns :

bool

is_closed

Return whether the order is closed.

An order is considered closed when its status can no longer change. The possible statuses of closed orders include;

  • DENIED

  • REJECTED

  • CANCELED

  • EXPIRED

  • FILLED

Returns :

bool

is_contingency

Return whether the order has a contingency ( contingency_type is not NO_CONTINGENCY ).

Returns :

bool

is_emulated

Return whether the order is emulated and held in the local system.

Returns :

bool

is_inflight

Return whether the order is in-flight (order request sent to the trading venue).

An order is considered in-flight when its status is any of;

  • SUBMITTED

  • PENDING_UPDATE

  • PENDING_CANCEL

Returns :

bool

Warning

An emulated order is never considered in-flight.

is_open

Return whether the order is open at the trading venue.

An order is considered open when its status is any of;

  • ACCEPTED

  • TRIGGERED

  • PENDING_UPDATE

  • PENDING_CANCEL

  • PARTIALLY_FILLED

Returns :

bool

Warning

An emulated order is never considered open.

is_parent_order

Return whether the order has at least one child order.

Returns :

bool

is_passive