reqAllOpenOrders () не может загрузить данные моей учетной записи - PullRequest
0 голосов
/ 25 марта 2020

Я новичок в ibapi и использую бесплатную "https://pypi.org/project/ibapi/". Я хочу скачать все детали заказов внутри красной рамки в изображении.

введите описание изображения здесь

Код

from ibapi.client import EClient 
from ibapi.wrapper import EWrapper 
from ibapi.contract import Contract 

class TestApp(EWrapper, EClient):
    def __init__(self):
        EClient.__init__(self, self) 

    def error(self, reqId, errorCode, errorString):
        print("Error: ", reqId, " ", errorCode, " ", errorString)

    def contractDetails(self, reqId, contractDetails):
        print("contractDetails: ", reqId, " ", contractDetails) 

    def openOrder(self):
        super().openOrder()
        print("OpenOrder. PermId: ", order.permId, "ClientId:", order.clientId, " OrderId:", orderId, "Account:", order.account, "Symbol:", contract.symbol, "SecType:", contract.secType,"Exchange:", contract.exchange, "Action:", order.action, "OrderType:", order.orderType,"TotalQty:", order.totalQuantity, "CashQty:", order.cashQty, "LmtPrice:", order.lmtPrice, "AuxPrice:", order.auxPrice, "Status:", orderState.status)
        order.contract = contract
        self.permId2ord[order.permId] = order



def main():
    app = TestApp() 
    app.connect("127.0.0.1", 1111, 0)
    app.reqAllOpenOrders()
    app.run() 
    app.disconnect()


main()

Пожалуйста, помогите мне найти ошибку или поделитесь совершенно другим подходом, если у вас есть .

1 Ответ

1 голос
/ 02 апреля 2020

Аргументы функции openOrder неверны, поэтому, скорее всего, они не переопределяют функцию EWrapper и никогда не получают обратный вызов. Это должно быть:

 def openOrder(self, orderId, contract, order, orderState): 

(Если бы openOrder(self) в вашем примере когда-либо вызывался, это выдает ошибку, потому что order.contract не определено)

Другие проблемы:

  • Между подключением и вызовом любых других функций в EClient должна быть пауза (лучше всего дождаться обратного вызова nextValidID)
  • Функция run () l oop бесконечна, поэтому функция connect () в ваша программа никогда не будет вызвана.

Возможно, вас заинтересует курс Python API в Академии трейдеров на сайте IBKR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...