我如何在ib_insync TWS中获得执行委托

时间:2018-07-30 13:00:52

标签: python python-3.x tws

我需要在交易平台中获得执行佣金。 我通过python的ib_insync库连接到它们。

我这样做:

ib = IB()
ib.connect('127.0.0.1', 7497, 1)
ib.placeOrder(contract, order)

for e in ib.executions():
    print(e)

问题是-此处决的佣金在哪里飞?我怎样才能抓住他们?

2 个答案:

答案 0 :(得分:1)

好,我找到了解决方法:

from ib_insync import IB

class MyTrader:
    def __init__(self):
        self.ib = IB()
        self.ib.setCallback('commissionReport', self.commissionCallback)

    def commissionCallback(self, *args):
        print(args[-1])    # CommissionReport object will be printed when order is filed

    def trulala(self):
        self.ib.connect('127.0.0.1', 7498, 1)
        contract = Contract(...)
        order = Order(...)
        self.ib.placeOrder(contract, order)

最后存在一个更简单的方法(如果需要访问对象,该方法很有用),

self.ib.fills()  

将返回一个Fill对象列表,其中包含所有必需对象的元组,例如Contract,Order,Execution和CommissionReport。

答案 1 :(得分:-1)

您应该在https://groups.io/g/insync询问详细信息,我怀疑这里有人使用该库。

执行中不返回佣金,而是在CommissionReport中返回佣金。 http://interactivebrokers.github.io/tws-api/classIBApi_1_1CommissionReport.html

请注意,该ID是与ID匹配的执行中的ID。