python - 如何从 API Interactive Brokers 的 ib.reqHistoricalData 生成的元组列表中获取元素
问题描述
盈透证券 API 为该请求提供:
spzValue = ib.reqHistoricalData(spx, endDateTime='', durationStr='7200 S', barSizeSetting='1 hour', whatToShow='TRADES', useRTH =False)
变量“spxValue”的以下输出:
[BarData(date=datetime.datetime(2019, 7, 19, 20, 0), open=200.59, high=200.7, low=199.69, close=199.76, volume=97, average=200.045, barCount=87), BarData(date=datetime.datetime(2019, 7, 19, 21, 0), open=199.66, high=199.67, low=198.19, close=198.21, volume=369, average=198.969, barCount=322)]
不知何故,我没有成功地将元素从这个列表中取出,也没有通过以下方式将其转换为 DataFrame:
df = util.df(spzValue)
有人对我如何从“BarData”列表中选择特定元素有任何建议吗?例如,我希望第一个柱的“收盘”值 199.76。
提前致谢。
解决方案
看起来您正在使用ib_insync?(不仅仅是原生的 IBKR Python API)。
在https://github.com/erdewit/ib_insync有一个接收历史数据的例子
from ib_insync import *
# util.startLoop() # uncomment this line when in a notebook
ib = IB()
ib.connect('127.0.0.1', 7497, clientId=1)
contract = Forex('EURUSD')
bars = ib.reqHistoricalData(contract, endDateTime='', durationStr='30 D',
barSizeSetting='1 hour', whatToShow='MIDPOINT', useRTH=True)
# convert to pandas dataframe:
df = util.df(bars)
然后,一旦有了数据框,就可以使用 iloc 访问第一行,然后使用列名访问值:
df.iloc[0]['close']
推荐阅读
- r - Tidymodels 包:使用 R 中的 juice() 和 bake() 函数进行模型预测以找到最佳模型拟合
- classification - 如何以 zarr 格式动态存储一组图像和标签?
- opencv - 我想检测段落中所有带下划线的单词
- python - 当当前时间某处有零时,将其转换为二进制失败
- c++ - 递归函数在 0x79B20AD2 (ucrtbased.dll) 处引发未处理的异常
- wordpress - 使用 htaccess 将所有页面重定向到单个页面?
- windows-installer - 安装程序在没有任何重启提示的情况下重启
- java - 使用代码编译包含 java 类和文本文件的目录
- python-3.x - 是否可以使用python截取文件内容的屏幕截图
- google-api - 尝试使用 Python 的库在 GAPI Drive v3 中按文件 ID 查询时出错