我需要在 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)
问题是 - 这次处决的佣金在哪里?我怎样才能抓住他们?
我需要在 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)
问题是 - 这次处决的佣金在哪里?我怎样才能抓住他们?
好的,我找到了解决方案:
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。
你应该在https://groups.io/g/insync上询问细节 我怀疑这里有人使用那个库。
佣金不会在执行中返回,它们会在commissionReport 中返回。 http://interactivebrokers.github.io/tws-api/classIBApi_1_1CommissionReport.html
请注意,该 id 是与佣金报告匹配的执行中相同的执行 id。