如何获取基本比率通用记号(Python3.x)(交互式代理)

2024-09-28 21:53:22 发布

您现在位置:Python中文网/ 问答频道 /正文

基于以下网站,我想通过reqMktData“233236258”下载基本面比率通用记号

https://interactivebrokers.github.io/tws-api/fundamental_ratios_tags.html

但是,我试了很多次,这个错误是无法纠正的。在

'读取错误请求:消息id1004无法分析数据。java.lang.NumberFormatException:对于输入字符串:“Snapshot”']

AttributeError:“IBWrapper”对象没有属性“reqMktData”

备注:“IBWrapper”并非IB官方网站提供,而是通过以下链接提供: https://github.com/anthonyng2/ib

# -*- coding: utf-8 -*-

"""
Created on Wed Jun 20 19:37:23 2018
@author: Owner
"""

import time

from IBWrapper import IBWrapper, contract 

from ib.ext.EClientSocket import EClientSocket



callback = IBWrapper() # Instantiate IBWrapper. callback

tws = EClientSocket(callback) # Instantiate EClientSocket and return data to 
callback

host = "127.0.0.1"

port = 7496

clientId = 25

tws.eConnect(host, port, clientId) # connect to TWS

create = contract() # Instantiate contract class

callback.initiate_variables()

contract_Details = create.create_contract(700, 'STK', 'SEHK', 'HKD')

tickerId = 1004

tws.reqMktData(tickerId,

contract_Details,

"233,236,258",

"ReportSnapshot" #ReportsFinSummary ReportsOwnership ReportsFinStatements 
#RESC CalendarReport ReportSnapshot

)

time.sleep(5)

print(callback.reqMktData)

tws.eDisconnect()

Tags: fromhttpsimportgithubtime错误createcallback
1条回答
网友
1楼 · 发布于 2024-09-28 21:53:22

经过认真研究,IBWrapper不支持通用的tick数据,只能导入ibpy。在

from ib.ext.Contract import Contract
from ib.opt import ibConnection
from time import sleep
import csv

class Downloader(object):
    tickType47value = ''
    #field4price = ''

    def __init__(self):
        self.tws = ibConnection('localhost', 7496, 20)
        self.tws.register(self.tickPriceHandler, 'TickString')
        self.tws.connect()
        self._reqId = 1003 # current request id

    def tickPriceHandler(self,msg):
        if msg.tickType == 47:    # tickType=47 
            self.tickType47value = msg.value
            #print('[debug]', msg)

    def requestData(self,contract): 
        self.tws.reqMktData(self._reqId, contract, "233, 236, 258", False)  #"233, 236, 258", 
        self._reqId+=1  

    def cancelData(self):    
        #self.tws.cancelMktData(1003)
        self.tws.disconnect()

以下链接是所有可用的基本比率-标记值,这些值出现在“标题”中: https://interactivebrokers.github.io/tws-api/fundamental_ratios_tags.html

^{pr2}$

相关问题 更多 >