0

我需要在 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)

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

4

2 回答 2

2

好的,我找到了解决方案:

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。

于 2018-07-31T00:07:25.933 回答
1

你应该在https://groups.io/g/insync上询问细节 我怀疑这里有人使用那个库。

佣金不会在执行中返回,它们会在commissionReport 中返回。 http://interactivebrokers.github.io/tws-api/classIBApi_1_1CommissionReport.html

请注意,该 id 是与佣金报告匹配的执行中相同的执行 id。

于 2018-07-30T15:10:38.670 回答