2 votos

Problemas para recuperar datos históricos a través de IbPy

Tengo problemas para recuperar los datos históricos de 14 días de IB. Recientemente he hecho el cambio de MATLAB a Python, así que tengo que ponerme al día. ¿Dónde me equivoco? Se agradece toda la ayuda.

import sys

import pandas as pd

from time import sleep, strftime

from ib.ext.Contract import Contract

#Make connection
conn = Connection.create(port=7496, clientId=999)
conn.connect()

def var2(msg):
    print(msg)

conn.register(var2, message.historicalData)
def var3(msg):
    print(msg)

if __name__ == '__main__':
    #conn = ibConnection()
    conn.register(var2, 'UpdateAccountValue')
    conn.register(var3, message.tickSize, message.tickPrice)
    conn.connect()

    def inner():

        qqqq = Contract()
        qqqq.m_secType = "STK" 
        qqqq.m_symbol = "ABN"
        qqqq.m_currency = "EUR"
        qqqq.m_exchange = "AEB"
        endtime = strftime('%Y%m%d %H:%M:%S')
        conn.reqHistoricalData(1,qqqq,endtime,"14 D","1 min","BID",1,1)
        data = reqHistoricalData

conn.disconnect()

0 votos

No llamaste a la inner() función.

0 votos

¿Puede dar un ejemplo?

0 votos

Ha definido una función def inner() en tu código, pero nunca llamas a la función, pon inner() en la línea justo después de conn.connect() para que llame a la inner() función. Si todavía tiene error, publique su código de error.

0voto

Pacific Turtle Puntos 56

Tienes varios errores en tu código, uno evidente es tener un inner() sin llamarla. Aquí hay un ejemplo que he limpiado basado en su código. He añadido algunos comentarios en mi código la explicación de lo que está pasando. También ver mis comentarios en su puesto original.

from time import sleep, strftime
from ib.ext.Contract import Contract

def historical_data_handler(msg):
    # The response data callback function
    # print (msg.reqId, msg.date, msg.open, msg.close, msg.high, msg.low)
    print(msg)

if __name__ == '__main__':
    # Establish IB connection, make sure you have the correct port, clientId
    conn = ibConnection(host='127.0.0.1', port=7496, clientId=999)

    # Register the response callback function and type of data to be returned
    conn.register(historical_data_handler, message.historicalData)
    conn.connect()

    # Establish a Contract object and the params for the request
    req = Contract()
    req.m_secType = "STK" 
    req.m_symbol = "ABN"
    req.m_currency = "EUR"
    req.m_exchange = "AEB"
    endtime = strftime('%Y%m%d %H:%M:%S')
    conn.reqHistoricalData(1,req,endtime,"14 D","1 min","BID",1,1)

    # Make sure the connection don't get disconnected prior the response data return
    sleep(5)
    conn.disconnect()

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X