如何通过Bybit API接口获取最近200根K线(蜡烛图)数据
解决Bybit获取最近200根K线的问题
1. 特殊语法说明
你看到的**{'from': 1581231260}是Python的关键字参数解包语法,之所以用这种写法是因为from是Python的保留关键字,不能直接作为参数名写from=xxx,所以用字典包装后解包传参,效果和直接传参完全一致。
2. 现有代码的隐藏错误
你当前的客户端初始化代码有逻辑问题:
# 错误写法:把变量名加了引号,实际传的是字符串"api_key_i"而非你设置的密钥值 client = bybit.bybit(test=True, api_key="api_key_i", api_secret="api_secret_i") # 修正写法:去掉引号直接传变量 client = bybit.bybit(test=True, api_key=api_key_i, api_secret=api_secret_i)
3. 调整参数实现需求
要获取最新的200根5分钟K线,只需要计算200根K线对应的起始时间戳即可:
- 每根K线间隔是5分钟,200根总时长为
200 * 5 * 60 = 60000秒 - 用当前时间戳减去这个总时长,就是
from参数需要的起始时间值
接口参数中文说明(翻译自官方文档):
symbol:交易对名称,示例用的是DOTUSDTinterval:K线周期,单位为分钟,可选值:1、3、5、15、30、60、120、240、360、720、1440from:起始时间戳,单位为秒limit:返回K线数量,最大值为200
4. 完整可运行代码
import bybit import pprint import time api_key_i = "你的实际API Key" api_secret_i = "你的实际API Secret" client = bybit.bybit(test=True, api_key=api_key_i, api_secret=api_secret_i) # 计算200根5分钟K线对应的起始时间戳 start_timestamp = int(time.time()) - 200 * 5 * 60 x = client.LinearKline.LinearKline_get(symbol="DOTUSDT", interval="5", limit=200, **{'from': start_timestamp}).result() # 打印返回的K线数量,正常为200 print(len(x[0]['result'])) pprint.pprint(x[0]['result'])
内容的提问来源于stack exchange,提问作者Tatenda Taj Zhou
相关产品推荐
相关产品推荐

