3

我是新手IBpy,我想知道是否有任何方法可以在不发送订单并等待人工输入实际发送订单的情况下下订单?

我习惯placeOrder下订单,但我找不到不发送订单的方法。

任何帮助将不胜感激。

4

1 回答 1

5

在您的订单中将 m_transmit 设置为 False。

from ib.ext.Contract import Contract
from ib.ext.Order import Order
from ib.opt import ibConnection, message
from time import sleep

def watchAll(msg):
    print(msg)

con = ibConnection(clientId=1)
con.registerAll(watchAll)
con.connect()
sleep(1)

fx = Contract()
fx.m_secType = "CASH" 
fx.m_symbol = "USD"
fx.m_currency = "CAD"
fx.m_exchange = "IDEALPRO"
con.reqMktData(1,fx,"",False)

ord = Order()
ord.m_orderType = 'MKT'
ord.m_totalQuantity = 100000
ord.m_action = 'BUY'
ord.m_transmit = False
con.placeOrder(1234,fx,ord)

您的 TWS 会有这样的一行 在此处输入图像描述 如果您想从 TWS 传输,请注意传输按钮。

然后您可以使用相同的 orderId 重新发送相同的订单,但将 m_transmit 设置为 True。

ord.m_transmit = True
con.placeOrder(1234,fx,ord)

然后它被传输,TWS 将显示填充,订单消息回调也将打印在简单的def watchAll(msg) 在此处输入图像描述

于 2015-05-11T22:11:09.747 回答