币安2021年12月31日到期交割合约历史价格查询报错如何解决
报错原因说明
你遇到的Invalid symbol错误核心有两个诱因:
- 接口与合约类型不匹配:你当前用的
futures_historical_klines默认适配U本位永续合约,若查询币本位交割合约,或是部分版本SDK的U本位交割合约,需要调用对应类型的专属接口 - 合约代码拼写错误:你使用的
BTCUSD_211231/BTCUSDT_211231可能和Binance官方的命名规则不一致,需先确认正确的交易对代码
解决步骤
第一步:确认对应合约的正确交易对代码
先调用交易所信息接口,打印所有期货合约代码,找到2021年12月到期的BTC对应合约的准确拼写:
# 若查询U本位合约(USDT作为保证金),执行以下代码 usd_futures_info = client.futures_exchange_info() for item in usd_futures_info['symbols']: print(item['symbol']) # 若查询币本位合约(加密币作为保证金),执行以下代码 coin_futures_info = client.futures_coin_exchange_info() for item in coin_futures_info['symbols']: print(item['symbol'])
如果已到期的合约在上述返回结果里查询不到,说明该合约已经下线,API无法直接调取历史数据,可以通过Binance平台的公开历史数据存档下载对应数据。
第二步:调用对应类型合约的K线接口
根据你要查询的合约类型,替换对应的调用方法:
情况1:查询U本位交割合约
确认交易对代码正确后,使用以下代码查询:
df = pd.DataFrame(client.futures_historical_klines( symbol='替换为第一步查到的正确U本位交割合约代码', interval='1d', start_str='2021-06-01', end_str='2021-12-31' ))
情况2:查询币本位交割合约
确认交易对代码正确后,使用币本位专属K线接口查询:
df = pd.DataFrame(client.futures_coinm_historical_klines( symbol='替换为第一步查到的正确币本位交割合约代码', interval='1d', start_str='2021-06-01', end_str='2021-12-31' ))
内容的提问来源于stack exchange,提问作者user14446828
相关产品推荐
相关产品推荐

