QMT怎么开户?全网最细:QMT策略如何读取本地CSV?
发布时间:12小时前阅读:42

量化交易里,数据就是“石油”。QMT本身提供了不错的行情数据,但它不提供财务数据(比如PE、PB、ROE),也不提供宏观数据。如果你想做基本面量化或者多因子选股,就得自己想办法把外部数据接进来。
这篇文章就专门讲这个,怎么用Tushare把数据喂给QMT,以及怎么让QMT读取你电脑上的CSV文件。
一、先搞清楚两个版本的区别
在动手之前,得先知道你用的是哪个版本的QMT,因为玩法不太一样-:
1. 完整版QMT(在客户端里写代码)
- 能做什么:既能读你电脑上的本地文件,也能直接通过网络请求调用Tushare的在线接口-
- 适合谁:在QMT自带编辑器里开发策略的用户
2. miniQMT(用Python写独立的脚本)
- 能做什么:只能读取本地文件(比如CSV),不支持在策略里直接向Tushare发网络请求
- 适合谁:用Python写独立量化脚本,想脱离QMT界面跑程序的人
搞清楚这点,你就知道该走哪条路了。
二、Tushare对接QMT的三种姿势
方式一:本地文件对接(最稳,强烈推荐)
这是最稳妥的方案——写一个单独的Python脚本,在盘后把Tushare的数据下载下来,存成CSV文件,然后让QMT策略去读这个文件-。
第一步:盘后下载数据(单独运行,不在QMT策略里)
import tushare as tsimport pandas as pd# 设置你的Tushare tokents.set_token('你的token')pro = ts.pro_api()# 下载股票基本面数据(比如市盈率、市净率)df = pro.daily_basic(ts_code='', trade_date='20260828', fields='ts_code,pe,pb,total_mv')# 保存为CSV文件,放在一个纯英文路径下df.to_csv('D:/quant_data/fundamental_data.csv', encoding='utf-8-sig')第二步:在QMT策略里读取这个文件
# coding:gbkimport pandas as pddefinit(C):# 在策略初始化的时候把数据读进来# 注意:路径一定要是纯英文的,QMT对中文路径支持不好[citation:7] df = pd.read_csv('D:/quant_data/fundamental_data.csv')# 把DataFrame转成字典,方便在handlebar里按股票代码快速查找global pe_dict pe_dict =dict(zip(df['ts_code'], df['pe']))print('外部数据加载完成!')defhandlebar(C):# 获取当前正在处理的股票代码 stock_code = C.get_stock_code()# 把QMT的代码格式转成Tushare的格式(比如把000001.SZ转成000001.SZ,这个格式两边是一样的,但有些数据源需要转换)# 注意:QMT用的是"000001.SZ",Tushare用的是"000001.SZ",可以直接用 pe = pe_dict.get(stock_code,None)if pe and pe <10:# 如果市盈率低于10,执行买入逻辑pass优点:不依赖网络,读取速度快,不会因为Tushare的API限频导致策略卡顿-。
方式二:在线API实时拉取(仅限完整版QMT)
如果你用的是完整版QMT,且数据量不大,可以在init初始化阶段直接调用Tushare接口-。但千万不要在handlebar里频繁调用,否则网络延迟和限频会拖垮你的策略。
# coding:gbkimport tushare as tsdefinit(C): ts.set_token('你的token') pro = ts.pro_api()# 在初始化阶段一次性拉取数据 df = pro.daily_basic(trade_date='20260828')# 处理后存入全局变量...方式三:使用EasyXT等封装工具(省心方案)
如果你不想自己写下载脚本,GitHub上有个叫EasyXT的封装库,可以帮你自动处理Tushare的数据下载和增量更新,还带GUI界面,点点按钮就能把数据下好。
三、本地CSV外部数据怎么读进策略?
刚才说的方法一其实就是读CSV。再补充几个关键点:
1. 代码格式要对齐
QMT的股票代码格式是000001.SZ(6位数字+点+市场缩写),你的CSV里存的代码得是这个格式,不然读进去对不上号。如果你的数据是其他格式(比如纯数字),在读取后要做一个转换-。
2. 路径一定要纯英文
D:/quant_data/data.csv ✅D:/量化数据/数据.csv ❌(QMT对中文路径支持很差,容易报编码错误)
3. 别在handlebar里反复读文件
数据在init里一次性读进来,存成字典或DataFrame,在handlebar里直接从内存取,不要每次交易信号触发都去读一次硬盘,那样太慢了。
四、新手最容易踩的两个坑
坑一:未来函数
用Tushare抓财报数据时,财报发布日期和报告期不是同一天。比如一季报可能4月底才发,如果你在回测时用3月份的数据就用了还没发布的财报,这叫“未来函数”,会让回测结果虚高,实盘直接拉胯。解决办法:严格按ann_date(公告日期)过滤,确保策略在回测当天“确实能看到”这条数据。
坑二:时间戳格式对不上
QMT内部用的是时间戳(timetag),你从CSV读进来的日期可能是20260828这种格式。在比较日期的时候需要统一格式,否则会取不到值报KeyError-。
总结
想做基本面量化:盘后用Tushare下载财务数据→存成CSV→QMT策略在init里读进来→handlebar里直接用
数据量不大、用完整版QMT:可以在init里直接调Tushare接口,但别在handlebar里用
用miniQMT:只能读本地文件,老老实实用方法一
核心原则:数据下载和策略运行分离,盘后干活,盘中读本地,又稳又快
欢迎交流,点头像添加咨询!!AA级上市券商,免费理财咨询,资金量大股票佣金万0.85,逆回购一折!专项两融4%;港股通资金大W0.7;北交所W2(提供快速通道抢碎股)!ETF万0.5,期权1.8元全包,ETF免申赎费!免费提供QMT+ptrade量化软件(含教程和答疑群)、万得宏汇套利软件、VIP极速通道、L2十档行情!!可选靓号开户!支持T0智能算法!
温馨提示:投资有风险,选择需谨慎。
-
8月可转债强赎密集来袭!最后转股日汇总,手里有的赶紧看
2026-08-24 11:33
-
2026年开户选长城证券、华泰证券还是中金财富好?
2026-08-24 11:33
-
公积金新规9月20日实施!房租提取不卡比例,装修物业费也能提
2026-08-24 11:33


问一问

+微信
分享该文章
