Как вернуть значения из исторических данных в TWS API Python - PullRequest
1 голос
/ 18 февраля 2020
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
from threading import Timer

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

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

    def nextValidId(self, orderId):
        self.start()

    def historicalData(self, reqId, bar):
        # print("HistoricalData. ", reqId, " Date:", ...., bar.average)
        return bar.high


    def start(self):
        contract = Contract()
        contract.symbol = "TSLA"
        contract.secType = "STK"
        contract.exchange = "SMART"
        contract.currency = "USD"
       x = self.reqHistoricalData(1, contract, "", "60 s", "1 min", "MIDPOINT", 0, 1, False, [])
        print(x)


    def stop(self):
        self.done = True
        self.disconnect()
def main():
    app = TestApp()
    app.nextOrderId = 0
    app.connect("127.0.0.1", 7497, 0)

    Timer(4, app.stop).start()
    app.run()


if __name__ == "__main__":
    main()

Вместо того, чтобы печатать HistoricalData, как я смогу вернуть bar.high в этом случае?
Это мне сейчас ничего не дает.
Любая помощь приветствуется.
Чего мне не хватает?

Большое спасибо.

1 Ответ

0 голосов
/ 25 февраля 2020

Вы добавили возвращаемое значение к historicalData и надеетесь получить к нему доступ через reqHistoricalData. Но они совершенно разные функции. Если вы не готовы переписать классы API, вы не можете вызывать historicalData как обычную функцию. Таким образом, вы не можете получить доступ к его возвращаемому значению.

В моем коде я использую функции обратного вызова, такие как historicalData, чтобы установить переменные-члены содержащего класса. Затем, подождав пару секунд в основном потоке, я обращаюсь к переменным для получения исторических данных.

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