0

With the standard code below, I have been able to submit market (MKT) and limit orders(LMT) using a free demo account

from ib.opt import Connection, message
from ib.ext.Contract import Contract
from ib.ext.Order import Order


def make_contract(symbol, sec_type, exch, prim_exch, curr):
    Contract.m_symbol = symbol
    Contract.m_secType = sec_type
    Contract.m_exchange = exch
    Contract.m_primaryExch = prim_exch
    Contract.m_currency = curr
    return Contract


def make_order(action, quantity, price=None):
    if price is not None:
        order = Order()
        order.m_orderType = 'LMT'
        order.m_totalQuantity = quantity
        order.m_action = action
        order.m_lmtPrice = price
    else:
        order = Order()
        order.m_orderType = 'MKT'
        order.m_totalQuantity = quantity
        order.m_action = action

    return order


def main():
    conn = Connection.create(port=7496, clientId=999)
    conn.connect()

    oid = 100001
    cont = make_contract('TSLA', 'STK', 'SMART', 'SMART', 'USD')
    offer = make_order('BUY', 100, 315)

    conn.placeOrder(oid, cont, offer)
    conn.disconnect()


main()

does anyone have experience submitting LOO or MOO orders? When I change:

    order.m_orderType = 'LOO'

I do not get an exception, however, no pending order is show in IB TWS (demo).

user1452494
  • 1,145
  • 5
  • 18
  • 40

1 Answers1

1

According to the docs you make the type LMT or MKT as usual but change tif to OPG (for opening I guess).

order.tif = "OPG"
order.orderType = "LMT"

http://interactivebrokers.github.io/tws-api/basic_orders.html#limitonopen

note, the field names are using IB's new python API that you may want to look at.

brian
  • 10,619
  • 4
  • 21
  • 79