QMT教程6:如何获取行情(下)
发布时间:4小时前阅读:7
上一篇把标的列表拉出来了,这一篇接着往下:代码有了,怎么把历史和实时数据真正喂进策略里。
行情有两条腿,一条是历史,一条是实时,用法完全不同。历史数据要提前补到本地,客户端一般有数据下载或补充的功能,按品种和周期选好,等着它跑完;不补就直接在策略里取,遇到缺失段会拿到空值或者断点,回测结果会莫名其妙。实时数据靠订阅,你订阅了哪些标的、哪个周期,回调才会在那些标的上触发,没订阅的品种不会凭空出现。
历史接口的用法,注意三点。一是周期要和策略的持仓周期匹配,用日线信号去做分钟级交易,逻辑会打架。二是复权方式要固定,回测用前复权,实盘取原始价,两边的价格序列就对不上。三是字段顺序别靠猜,打印一行出来看清楚列名再用。
实时部分,注意订阅数量和频率。订阅是有上限的,标的多了要分批,或者只订阅当前持仓加自选。回调里取当根 K 线的字段时,最容易犯的错是用同一根 K 线的收盘价判断、又在同一根上成交,这在实盘里做不到,回测里却会给你一个漂亮的结果。还有一点,订阅要在策略启动后一次性做完,反复订阅、反复退订,容易让行情连接变得不稳定。
数据清洗也得提一句。停牌、涨跌停、集合竞价阶段缺数据,这些情况要显式处理,缺失值不能当零参与计算,否则均线会被拉出一个坑。常用的做法是跳过或者用前值填充,具体选哪个取决于你的逻辑。
再补一个性能上的注意点。历史数据量大的时候,别在每个回调里现场读文件,把常用的那几百根先读进内存,用一个字典按代码分类存好,后面直接查。取数动作集中在开盘前做完,盘中只做加法,这样即使机器配置一般,策略也不会卡。
验收方式给你一个:同一标的、同一周期,历史数据的最后一根和实时推送的第一根能接上,价格不跳、时间不断,除权日除外。接不上,说明复权或者周期没对齐,先修这个再谈信号。
股票/量化开户欢迎找我!满足条件股票佣金万0.854、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!期权1.8元一张全包价!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
