返回列表 发布新帖

[QMT攻略—本地数据高速读取(数据篇)get\_market\_data\_ex

31 1
发表于 昨天 15:24 | 显示全部楼层 阅读模式

第三期:get_market_data_ex:QMT数据调度中枢的"双生模式"

核心定位:这是QMT数据体系最关键的函数,没有之一。它既是回测时的 "时光机" (读取本地历史),又是实盘时的 "雷达站" (订阅实时数据)。一个 subscribe参数的布尔值,决定了策略是活在历史幻觉还是真实战场。90%的新手因混淆该参数,导致回测完美、实盘爆仓。

一、函数的战略价值:

get_market_data_ex是xtquant中唯一支持双模式的函数,通过 subscribe参数在 "本地回放""实时直播" 间切换:

模式 subscribe=False subscribe=True
数据源 本地加密文件(已下载) 行情服务器实时流
延迟 0.1ms(磁盘读取) 3ms(网络+服务器)
适用场景 回测、复盘 实盘、监控
结果可复现 否(实时数据无法重现)
网络依赖 有(断网即失效)

生死区别:回测时若误用 subscribe=True,策略会等待实时数据到来,导致回测卡死或结果不可复现;实盘时若误用 subscribe=False,策略读取的是过期本地数据,信号延迟>1分钟,完全失效。

二、6个参数逐字拆解:每个都是"地雷"

参数1:field_list —— 字段筛选的"性能黑洞"

基础用法

性能影响:字段每增加1个,内存占用+10%,回测速度-5%。高频策略中,字段筛选可提速30%

实战技巧:高频策略只用 lastPricevolume;日内策略加 high/low;持仓策略才需要 openInt(持仓量)。


参数2:stock_code —— 字符串的"严格格式"

致命陷阱:不支持列表,必须是字符串。批量获取需循环调用,但可优化:

特殊处理:北交所股票后缀为 .BJ,港股通为 .HK,期货为 .SHFE等,格式错误返回空数据


参数3:period —— 周期的"档位选择"

周期与数据量关系(以贵州茅台1年为例):

  • 'tick'500MB(240万条),仅适合高频
  • '1m'10MB(12万条),性价比最高
  • '5m'2MB(2.4万条),适合波段
  • '1d'1KB(365条),适合多因子

黄金法则:回测时先用 '1d'验证逻辑,再用 '1m'精细化。直接上 'tick'会导致回测耗时10小时,且过拟合风险极高


参数4:count vs start_time —— 数据范围的"互斥陷阱"

两者互斥count=-1(全部)时,start_timeend_time失效;若指定 start_time,则 count无效。

实战技巧count=240可获取最近1天分钟线,用于尾盘策略count=-1用于全量回测

参数5:dividend_type —— 复权的"生死选择"

四种复权方式对比

方式 价格连续性 负数问题 适用场景
'none' 断层 仅用于分析原始价格
'front' 连续 有 (多次分红后) 禁用,会导致策略信号错误
'back' 连续 仅用于展示,不适合回测
'front_ratio' 连续 唯一推荐,乘法复权保真

致命案例:某用户使用 'front'前复权回测贵州茅台2015-2020年,2018年出现 -50元 的买入信号,回测崩溃。切换到 'front_ratio'后正常。

黄金法则:回测与实盘必须统一使用 'front_ratio',否则信号漂移。

参数6:subscribe —— 模式的"灵魂开关"

这是本函数最核心的参数,没有之一。

模式A:回测模式(subscribe=False

模式B:实盘模式(subscribe=True

生死陷阱:回测时误用 subscribe=True,函数会等待实时数据到来,导致回测卡死或结果不可复现;实盘时误用 subscribe=False,读取的是过期本地数据,信号延迟>1分钟,完全失效。

三、双模式实战:同一个策略,两套代码

策略逻辑:双均线金叉买入,死叉卖出

** **回测版本(subscribe=False) ** **

实盘版本(subscribe=True

核心差异

  • 回测版:一次性读取,批量计算,速度快
  • 实盘版:逐根触发,逐根计算,延迟低
  • 转换成本:从回测到实盘,需重写30%代码(主要是持仓管理、下单逻辑)

五、避坑指南:90%新手倒在这里

坑1:未下载数据就调用

现象get_market_data_ex返回 None或空DataFrame 解决:先执行 download_history_data,再调用本函数

坑2:subscribe=True用于回测

现象:回测卡死或结果每次不同 解决:回测必须 subscribe=False,实盘才用 True

坑3:订阅超限300品种

现象:超过300个品种后,返回前值填充的重复数据 解决:用 get_full_tick替代 subscribe_quote

坑4:时间格式错误

现象:返回空数据,无报错 解决:时间格式必须为 '20251126093000',精确到秒

坑5:复权方式导致负数

现象:价格出现-50元,策略崩溃 解决:始终使用 'front_ratio'等比前复权

六、总结与下期预告

get_market_data_ex是QMT的 必备 ,一个函数打通回测与实盘。掌握其双模式切换、字段裁剪、复权选择三大技巧,就能构建机构级的数据调度能力。

下期预告:我们将深入 subscribe_quote,解锁毫秒级实时监控的黑科技,实现涨停预警、盘口狙击、动态风控三大实战策略。记住:数据不精准,策略等于0;模式不区分,实盘等于猜。

彩蛋:

1、QMT开通流程

(1)开户➕入金10万以上

(2)提供测试账号、安装配置流程、量化会员资料。

2、VIP服务

3、VIP福利

惊喜佣金

添加量化讨论群

量化工具全套资料库

提供服务器托管模式:ptrade策略+ldp极速柜台+vip定向服务器(限50人)

评论1

*******1285
发表于 昨天 18:14 | 显示全部楼层
新手必看,赞一个

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表