问题描述
无法下载或者获取 tick 数据,试过最近一天也不行
解决方案
在QMT(迅投极速量化交易平台)中,遇到无法获取或下载Tick(分笔)数据的问题,通常是由本地数据未补充、API接口使用不当或参数设置错误引起的。以下是详细的排查步骤和解决方法:
1. 确认本地数据是否已补充
QMT平台在回测或获取历史数据时,依赖于本地客户端的数据缓存。如果您没有提前下载Tick数据,API将返回空值。
解决办法:
- 打开QMT客户端,进入**【数据管理】** -> 【补充数据】。
- 选择您需要的市场、品种,并在“周期”中勾选**“分笔(Tick)”**。
- 设定好时间范围(注意:Tick数据量非常大,建议按需下载,不要一次性下载过长时间的数据),点击下载。
2. 检查API接口及参数设置
获取Tick数据时,必须使用支持Tick周期的接口,并正确设置period参数。
推荐接口一:get_market_data_ex(获取历史或最新Tick)
使用此接口时,必须将period参数设置为'tick'。
def handlebar(ContextInfo):
# 确保只在最后一根K线执行,避免重复打印
if not ContextInfo.is_last_bar():
return
# 获取平安银行最近的Tick数据
tick_data = ContextInfo.get_market_data_ex(
fields=[],
stock_code=['000001.SZ'],
period='tick',
start_time='',
end_time='',
count=10, # 获取最近10笔
subscribe=True
)
print(tick_data)
推荐接口二:get_full_tick(获取最新一笔Tick快照)
如果您只需要当前最新的分笔快照数据,使用get_full_tick最为高效。
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
# 获取最新分笔数据
latest_tick = ContextInfo.get_full_tick(['000001.SZ', '600000.SH'])
print(latest_tick)
3. 检查回测时间与数据匹配
如果您是在回测模式下获取Tick数据,请确保:
- 策略编辑器中的回测参数(开始时间、结束时间)在您已下载的Tick数据时间范围内。
- 如果回测周期是日线(1d),但在代码中尝试获取当天的历史Tick,可能会因为数据未对齐而获取失败。建议在实盘/模拟运行模式下测试实时Tick获取。
4. 权限问题(Level2数据)
普通的Tick数据(快照,通常3秒一次)所有用户均可获取。但如果您尝试获取逐笔成交或逐笔委托等Level2级别的高频数据(如period='l2quoteaux'),需要您的QMT账号开通了Level2增强版权限。如果未开通,相关接口将无法返回数据。
总结:绝大多数“无法获取Tick数据”的问题都是因为未在数据管理中手动下载对应时间段的分笔数据。请先补充数据,再运行上述测试代码。