Как я могу получить комиссию за исполнение в 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

Обратите внимание, что идентификатор - это идентификатор выполнения, который совпадает с исполнением, соответствующим отчету о комиссии.

Другие вопросы по тегам