как получить и отобразить на консоли Python исторические данные из TWS?

Мне удалось успешно установить соединение с python на TWS, но я не смог получить данные или не уверен, что данные извлекаются, но не отображаются.

Я новичок в этом, не могли бы вы помочь, как получить исторические данные из TWS?


person Kartik Parashar    schedule 27.02.2017    source источник
comment
Что вы пробовали? Пожалуйста, опубликуйте свой воспроизводимый код, чтобы люди могли лучше помочь вам. Для получения дополнительной информации прочитайте stackoverflow.com/help/how-to-ask.   -  person Brian O'Donnell    schedule 04.03.2017
comment
stackoverflow.com/a/42815884/2855515   -  person brian    schedule 15.03.2017


Ответы (1)


Это работает для меня.

from ibapi.wrapper import EWrapper
from ibapi.client import EClient
from ibapi.utils import iswrapper
from ibapi.common import *
from ibapi.contract import *
from ibapi.ticktype import *

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

  def error(self, reqId: TickerId, errorCode:int, errorString:str):
    print('Error:', reqId, " ", errorCode, " ", errorString)

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

  def marketDataType(self, reqId: TickerId, marketDataType: int):
    super().marketDataType(reqId, marketDataType)
    print("MarketDataType. ", reqId, "Type:", marketDataType)
  @iswrapper
  def tickPrice(self, reqId: TickerId, tickType: TickType, price: float, attrib: TickAttrib):
    super().tickPrice(reqId, tickType, price, attrib)
    print("Tick Price. Ticker Id:", reqId, "tickType:", tickType, "Price:", price, "CanAutoExecute:", attrib.canAutoExecute, "PastLimit", attrib.pastLimit)
  @iswrapper
  def tickSize(self, reqId: TickerId, tickType: TickType, size: int):
    super().tickSize(reqId, tickType, size)
    print("Tick Size. Ticker Id:", reqId, "tickType:", tickType, "Size:", size)

  @iswrapper
  def tickString(self, reqId: TickerId, tickType: TickType, value: str):
    super().tickString(reqId, tickType, value)
    print("Tick string. Ticker Id:", reqId, "Type:", tickType, "Value:", value)

  @iswrapper
  def tickGeneric(self, reqId: TickerId, tickType: TickType, value: float):
    super().tickGeneric(reqId, tickType, value)
    print("Tick Generic. Ticker Id:", reqId, "tickType:", tickType, "Value:", value)

def main():
  app = TestApp()
  app.connect("127.0.0.1", 4001, 0)

  contract = Contract();
  contract.symbol = "VIX";
  contract.secType = "FUT";
  contract.exchange = "CFE";
  contract.currency = "USD";
  contract.lastTradeDateOrContractMonth = "20170621";

  app.reqMktData(1001, contract, "", False, False, [])

  app.run()
  sleep(10)
  app.disconnect()


if __name__ == '__main__':
  main()
person Jeremy    schedule 14.06.2017