Как я могу получить комиссию за исполнение в TW ib_insync
Мне нужно получить комиссию за исполнение в TWS. Я подключаюсь к ним через библиотеку ib_insync для python.
Я делаю около:
ib = IB()
ib.connect('127.0.0.1', 7497, 1)
ib.placeOrder(contract, order)
for e in ib.executions():
print(e)
Вопрос в том - куда летят комиссии за эти казни? как я могу поймать их всех?
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.
Вы должны спросить об этом по адресу https://groups.io/g/insync Я сомневаюсь, что кто-нибудь здесь использует эту библиотеку.
Комиссии не возвращаются в казни, они возвращаются в CommissionReport. http://interactivebrokers.github.io/tws-api/classIBApi_1_1CommissionReport.html
Обратите внимание, что идентификатор - это идентификатор выполнения, который совпадает с исполнением, соответствующим отчету о комиссии.