Python TWS API(交互式代理)-如何捕获事件和下订单

Python TWS API(交互式代理)-如何捕获事件和下订单,python,api,interactive-brokers,tws,Python,Api,Interactive Brokers,Tws,有这样一个问题: 我学习twsapi(interactivebrokers),了解方法、类等。 我注册了用于下订单的逻辑控制单元,在这个阶段我无法理解-如何在终端收到的不同价格条件下在终端下订单?这个问题可能是通过多线程解决的,但是,唉,我不能完全理解如何实现它。我请求你帮忙。下面是从终端获取数据的代码,位于main()块中-用于下订单的代码。我不明白如何附加下单触发条件。 提前感谢您提供的任何帮助和信息 from ibapi.client import EClient from

有这样一个问题: 我学习twsapi(interactivebrokers),了解方法、类等。 我注册了用于下订单的逻辑控制单元,在这个阶段我无法理解-如何在终端收到的不同价格条件下在终端下订单?这个问题可能是通过多线程解决的,但是,唉,我不能完全理解如何实现它。我请求你帮忙。下面是从终端获取数据的代码,位于main()块中-用于下订单的代码。我不明白如何附加下单触发条件。 提前感谢您提供的任何帮助和信息

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

class TestApp(EWrapper,EClient):
    def __init__(self):
        EClient.__init__(self,self)
    def error(self,reqId,errorCode,errorString):
        print("Error:  ",reqId,"  ",errorCode,"  ",errorString)
    def updateMktDepth(self, reqId, position: int, operation: int,side: int, price: float, size: int):
        print(price)
def main():
    app = TestApp()
    app.connect("127.0.0.1", 7497, 0)
    es = Contract()
    es.localSymbol = "ESZ9"
    es.symbol = "ES"
    es.secType = "FUT"
    es.exchange = "GLOBEX"
    es.currency = "USD"
    app.reqMarketDataType(4)
    app.reqMktDepth(1, es, 2, False, [])
    app.reqPositions()
    app.reqAllOpenOrders()
# QUESTION -  how  to place order, using any conditions with price? (for example: if price > 3000)
    order = Order()
    order.account = "DU1656058"
    order.action = "SELL"
    order.totalQuantity = 1
    order.orderType = "LMT"
    order.lmtPrice = 3055
    app.placeOrder(11000, es, order)
    app.run()
    app.disconnect()
if __name__ == "__main__":
    main()

TWS API可以设置订单提交标准,如价格条件和数量条件。官方文件是。例如,如果
订单
具有
时间条件
,则仅在特定时间之前或之后提交


这本书提供了演示如何设置订单条件的代码。

我已经看过fast官方文档,现在有另一个问题-如果我想为未平仓订单创建自己的条件-例如,当SP500期货上涨1%时-我在AAPL股票中多头开仓。或者,信号不仅可以是合约价格,还可以是组合:SP500/道琼斯迷你期货和一些比较——这将是我的订单开盘设置。我能用官方的“条件方法”解决这个问题吗?再次感谢你!!!我不认为你能用订单条件做到这一点,但你可以编写代码来监控SPX,并在SPX上升1%时自动提交AAPL(placeOrder)订单。你知道如何构造自己的条件吗?我认为有一个简单的原则。我可以从TWS获取所有数据,转换数据,进行任何计算,写入数据库等等,但不能灵活地为order exec构建条件。)可能是我很愚蠢,或者TWS api有点奇怪?!)希望优先)