es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

API de IB Python – Datos del Mercado Histórico de Acciones Alemanas

Me gustaría recuperar y almacenar datos históricos del mercado para acciones alemanas como Daimler AG.

El código que estoy utilizando para esto es el siguiente:

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
import pandas as pd
import matplotlib

class MyWrapper(EWrapper):
    def init(self):
        self.data = []
        self.df = None

    def nextValidId(self, orderId: int):
        print("Setting nextValidOrderId: %d", orderId)
        self.nextValidOrderId = orderId
        self.start()

    def historicalData(self, reqId, bar):
        self.data.append(vars(bar));

    def historicalDataUpdate(self, reqId, bar):
        line = vars(bar)
        self.df.loc[pd.to_datetime(line.pop('date'))] = line

    def historicalDataEnd(self, reqId: int, start: str, end: str):
        print("HistoricalDataEnd. ReqId:", reqId, "from", start, "to", end)
        self.df = pd.DataFrame(self.data)
        self.df['date'] = pd.to_datetime(self.df['date'])
        self.df.set_index('date', inplace=True)

    def error(self, reqId, errorCode, errorString):
        print("Error. Id: ", reqId, " Code: ", errorCode, " Msg: ", errorString)

    def start(self):
        queryTime = ""

        contract = Contract()
        contract.symbol = "DAI"
        contract.secType = 'STK'
        contract.exchange = 'SMART'
        contract.currency = "EUR"
        contract.primaryExchange = "SMART"

        app.reqHistoricalData(1, fx, queryTime, "1 D", "1 min", "MIDPOINT", 0, 1, True, [])

wrap = MyWrapper()
app = EClient(wrap)
app.connect("127.0.0.1", 7497, clientId=123)

import threading

threading.Thread(target=app.run).start()

print(wrap.df)
wrap.df.to_csv("myfile.csv")
app.disconnect()

wrap.df.close.plot()

Siempre recibo el mensaje de error:

“Error. Id: 1 Code: 162 Msg: Historical Market Data Service error message:No market data permissions for BATEDE, CHIXDE, DXEDE, EBS, TGHEDE, TRQXDE STK”

Tengo una suscripción de datos del mercado para Xetra/Frankfurt y la acción “DAI” definitivamente se negocia allí. ¿Por qué dice que no tengo permiso de datos del mercado? ¿Tengo que especificar las bolsas de datos del mercado suscritas? Si es así, ¿cuál es el nombre correcto que debo colocar en “contract.exchange”?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de inteligencia artificial, no tengo acceso a su suscripción de datos de mercado específica y a los intercambios de datos de mercado específicos a los que está suscrito. Sin embargo, el mensaje de error parece sugerir que no tiene permisos de datos de mercado para los intercambios especificados en el contrato.

    Es posible que desee verificar su suscripción y asegurarse de que tenga permisos para los intercambios desde los que intenta recuperar datos. También puede intentar especificar el intercambio correcto en el campo contract.exchange. Puede encontrar una lista de códigos de intercambio en la documentación de la API de Interactive Brokers.

Comments are closed.