通过 API IB 下单

Place order with API IB

在决定离开 Ibpy 并学习 API IB 后,我连下订单都遇到了麻烦。我究竟做错了什么?

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
from ibapi.order import *




#Def Market Order

class TestApp(EClient, EWrapper):
    def __init__(self):
        EClient.__init__(self, self)

    def nextValidId(self, orderId:int):
        self.nextOrderId = orderId
        print(orderId)
        self.start()


    def start(self):

        contract = Contract()
        contract.symbol = "ES"
        contract.secType = "FUT"
        contract.exchange = "GLOBEX"
        contract.currency = "USD"
        contract.lastTradeDateOrContractMonth = "201903"


        order = Order()
        order.action = "BUY"
        order.orderType = "MKT"
        order.totalQuantity = 1
        order.outsideRth = True

        self.placeOrder(self.nextOrderId, contract, order)

    def stop(self):
        self.done = True
        self.disconnect()

def main():
    app=TestApp()
    app.connect("127.0.0.1", 7496,420)
    app.nextOrderId = 0
    app.run()



if __name__ == "__main__":
    main()

删除了更多 Ibpy 并替换为 ibapi

现在得到

%Run basic.py 394 ERROR -1 2104 Market data farm connection is OK:usfuture ERROR -1 2104 Market data farm connection is OK:usfarm ERROR -1 2106 HMDS data farm connection is OK:ushmds ERROR 394 200 No security definition has been found for the request

from ib.ext.Contract import Contract from ib.ext.Order import Order

这些来自 IbPy,仅使用以 ibapi 开头的 类。