如何通过Python xbbg库正确调用彭博BDH函数获取指定时段数据
Python调用xbbg拉取彭博BDH日内数据正确方案
问题根因
原有代码无法返回正确结果,核心是两个参数使用错误:
- xbbg的
bdh接口不识别Excel公式里的大驼峰格式参数名,所有扩展参数需要转为蛇形命名(全小写+下划线分隔)才能被正确解析 start_date、end_date参数仅接收YYYY-MM-DD格式的日期值,带时分秒的日内交易时段需要通过单独的时间参数传入,直接拼接在日期参数里会被接口忽略
可直接运行的正确代码
from xbbg import blp # 标的代码,可根据需求替换,和示例Excel公式保持一致可填"5 hk equity" stock_ticker = "9988 hk equity" df_high = blp.bdh( tickers=stock_ticker, flds=["High"], start_date="2022-07-05", end_date="2022-07-05", # 以下为BDH扩展参数,全部使用蛇形命名 direction="V", bar_type="Trade", bar_size=390, time_zone="Hong_Kong", dates="H", # 单独传入日内时段范围 start_time="09:30:00", end_time="16:00:00" ) print(df_high)
关键注意事项
- 参数命名规则:所有Excel BDH公式里的扩展参数,在xbbg中都需要转为蛇形格式,例如
BarType对应bar_type、TimeZone对应time_zone,直接传原大写驼峰参数会被接口静默忽略 - 参数类型要求:
bar_size这类数值型参数直接传整数即可,不需要转为字符串,避免触发解析异常 - 时间参数拆分:拉取日内分段bar数据时,日期和时间必须分开传,
start_date/end_date控制查询的交易日范围,start_time/end_time控制每个交易日内的截取时段,两个维度的参数不要混写 - 上述写法返回的结果和提供的Excel BDH公式输出完全一致,为指定交易日09:30-16:00时段的Trade类390分钟bar最高价数据
内容的提问来源于stack exchange,提问作者Tim Choi
相关产品推荐
相关产品推荐

