
作为进入股市多年的投资者,你是不是也有这样的烦恼:每天挤出时间盯着 K 线,还要错过最佳买卖点;行情大涨时贪心不舍得卖,行情暴跌时又慌得割肉;明明看好的标的,全凭感觉操作最终还是亏钱…… 这些痛点,本质是人性弱点与市场效率的矛盾。而量化交易,正是解决这些问题的利器。今天这篇文章带你搞懂量化交易、策略框架,以及最实用的 QMT 量化软件。
咱们先抛开专业定义,用生活例子对比,一眼看懂量化交易和普通人工交易的区别:
传统人工交易:就像凭经验买菜、凭感觉炒股,白天花费时间盯盘,晚上熬夜看消息猜走势,买入全靠“觉得要涨”,卖出全靠“害怕跌了”,情绪完全跟着行情走,很容易追高被套、割肉踏空,全靠个人经验和心态,失误率特别高。

量化交易:把你靠谱的交易思路,比如“股价站上20日均线买,跌破10日均线卖”“成交量放大30%且股价创新低就分批建仓”,变成一套固定的、可执行的规则,再通过电脑程序自动识别行情、自动下单交易,全程不用人工盯盘、不用主观判断,完全按规则办事,也不用在手机或者app手动买卖。

我们先来看看手工交易者的一些交易日常:
开盘前梳理市场消息、制定当日交易计划;
盘中时时刻刻紧盯行情、结合指标判断买卖时机;
盘后复盘交易、总结盈亏得失。
从看盘到盘后复盘就是手工交易的全流程,这套流程有就是我们说的交易框架。
而量化交易策略框架,就是把这套人工完成的全流程交易动作,转化为标准化、可程序化执行的固定动作,把人工盯盘、判断、执行、复盘的每一步,都变成电脑可识别、可运行的固定流程,相当于给量化交易就是从看盘到实际下单搭好的完整的运行方案。
那大家可能会问做量化为什么不直接写出一个策略,而是需要搭建一个框架,这里给大家举一个生活中的例子:
比如你要建一栋房子,如果每一次建房都得亲自去挖地基、打桩、砌承重墙,那不仅工程浩大,而且效率极低。策略框架的作用,就相当于提前建好的地基和主体房屋结构。后面只需要在这个现成的框架上,根据自己的喜好去设计内饰、布置空间就可以了。
在量化交易的开发过程中,类似连接行情接口、调取数据、执行风控、维护程序稳定运行这类底层技术工作,往往要耗费掉绝大部分的时间和精力,可能占到 90% 以上。而真正决定策略成败的核心交易逻辑,反而是那 10%。策略框架的核心价值,就是帮你把繁琐的技术底层封装好,让你可以把全部的精力和智慧,都集中在那 10% 的核心交易逻辑的打磨和优化上。
所以今天我们要详细给大家介绍一下一个完整量化策略的核心,以目前市场上主流的量化软件miniQMT为例:
QMT 是目前国内许多券商采用的主流量化系统之一,兼顾专业性与易用性,QMT 极速策略交易系统内置了3.6 版本的python运行环境,提供行情数据与交易下单两大核心功能。通过编写 python 脚本,可以完成指标计算,策略编写,策略回测,实盘下单等一站式服务。

而MiniQMT 是迅投(QMT)系统提供的一个程序化交易接口(API)。它是QMT的极简模式,Python 策略通过调用 XtQuant这个python 接口,向本地已登录的 MiniQMT 客户端发送请求进行,包括行情获取、策略计算、下单交易等操作,(比如,“获取某股票的最新价”或“买入100股”)。
MiniQMT 接收到这些指令后,通过自身的连接与券商的交易服务器进行交互,将结果(行情数据、委托回报)通过 XtQuant 的回调机制返回到用户策略程序。相当于miniQMT的数据获取、策略编写等全部通过xtquant文件包在软件外部执行,而miniQMT本身只作为一个连接券商服务器的交易接口。

miniQMT策略框架核心模块拆解:
这里先详细介绍一下上面提到的xtquant这个文件包,XtQuant 提供了丰富的 Python API 接口,对外以Python库的形式提供策略交易所需要的行情和交易相关的API接口,让开发者能够使用 Python 语言方便地获取行情数据、执行交易指令(如下单、撤单)、查询账户资产、持仓、委托、成交等信息,并能接收这些信息的实时推送。本质上,XtQuant 封装了与 MiniQMT 客户端交互的所有底层通信细节。
xtquant封装了行情接口和交易接口,其中:
Xtdata 作为行情模块,只要作用是提供精简直接的数据满足量化交易者的数据需求,主要提供行情数据(历史和实时的K线和分笔)、财务数据、合约基础信息、板块和行业分类信息等通用的行情数据。
Xttrader 作为交易模块,封装了策略交易所需要的 Python API 接口,可以和 MiniQMT 客户端交互进行报单、撤单、查询资产、查询委托、查询成交、查询持仓以及接收资金、委托、成交和持仓等变动的主推消息。
下面分别说说miniQMT策略的核心框架和逻辑:
行情模块负责调取和处理市场数据,是策略决策的依据。它的主要功能和接口包括:
(1)单股订阅
直接向行情服务器订阅指定单个品种的实时行情数据。
from xtquant import xtdataimport timestock_code ='600109.SH'period = '1m'start_time = ''#最开始end_time = ''#当天count = -1#全部dividend_type = 'none'#不复权fill_data = True(2)全推行情
全推数据是指客户端启动后,自动接收并更新的全市场所有合约的最新数据快照。全推数据包含所有品种的最新分笔数据(tick),以及日线的开高低收、成交量、成交额和五档盘口(需在行情界面启用五档行情)。
全推数据推送周期是基于交易所标准的L1行情设计,每3秒推送一次分笔数据(tick数据),每次增量推送仅包含有变化的票,比如9.30.00 9.30.03 9.30.06 固定间隔返回数据
while True: full_tick = xtdata.get_full_tick(['600109.SH'])print(full_tick) time.sleep(3)XtQuant封装了策略交易所需要的Python API接口,可以和MiniQMT客户端交互进行报单、撤单、查询资产、查询委托、查询成交、查询持仓以及收到资金、委托、成交和持仓等变动的主推消息。
(1)建立连接
import randomfrom xtquant.xttrader import XtQuantTrader# miniQMT安装路径mini_qmt_path = r'D:\国金证券QMT交易端\userdata_mini'# 创建session_idsession_id = int(random.randint(100000, 999999))# 创建交易对象xt_trader = XtQuantTrader(mini_qmt_path, session_id)# 启动交易对象xt_trader.start()# 连接客户端connect_result = xt_trader.connect()if connect_result == 0:print('连接成功')(2)订阅账户
import randomfrom xtquant.xttrader import XtQuantTrader# miniQMT安装路径mini_qmt_path = r'D:\国金证券QMT交易端\userdata_mini'# 创建session_idsession_id = int(random.randint(100000, 999999))# 创建交易对象xt_trader = XtQuantTrader(mini_qmt_path, session_id)# 启动交易对象xt_trader.start()# 连接客户端connect_result = xt_trader.connect()if connect_result == 0:print('连接成功')(3)撤单与报单
import randomfrom xtquant.xttrader import XtQuantTrader# miniQMT安装路径mini_qmt_path = r'D:\国金证券QMT交易端\userdata_mini'# 创建session_idsession_id = int(random.randint(100000, 999999))# 创建交易对象xt_trader = XtQuantTrader(mini_qmt_path, session_id)# 启动交易对象xt_trader.start()# 连接客户端connect_result = xt_trader.connect()if connect_result == 0:print('连接成功')from xtquant.xttype import StockAccount# QMT账号account_id = '1010573943'# 创建账号对象account = StockAccount(account_id)# 订阅账号res = xt_trader.subscribe(account)print(account)print(res)(4)查询资产信息
import randomfrom xtquant.xttrader import XtQuantTrader# miniQMT安装路径mini_qmt_path = r'D:\国金证券QMT交易端\userdata_mini'# 创建session_idsession_id = int(random.randint(100000, 999999))# 创建交易对象xt_trader = XtQuantTrader(mini_qmt_path, session_id)# 启动交易对象xt_trader.start()# 连接客户端connect_result = xt_trader.connect()if connect_result == 0:print('连接成功')from xtquant.xttype import StockAccount# QMT账号account_id = '1010573943'# 创建账号对象account = StockAccount(account_id)# 订阅账号res = xt_trader.subscribe(account)print(account)print(res)(5)查询委托信息
import randomfrom xtquant.xttrader import XtQuantTrader# miniQMT安装路径mini_qmt_path = r'D:\国金证券QMT交易端\userdata_mini'# 创建session_idsession_id = int(random.randint(100000, 999999))# 创建交易对象xt_trader = XtQuantTrader(mini_qmt_path, session_id)# 启动交易对象xt_trader.start()# 连接客户端connect_result = xt_trader.connect()if connect_result == 0:print('连接成功')from xtquant.xttype import StockAccount# QMT账号account_id = '1010573943'# 创建账号对象account = StockAccount(account_id)# 订阅账号res = xt_trader.subscribe(account)print(account)print(res)(6)查询成交信息
import randomfrom xtquant.xttrader import XtQuantTrader# miniQMT安装路径mini_qmt_path = r'D:\国金证券QMT交易端\userdata_mini'# 创建session_idsession_id = int(random.randint(100000, 999999))# 创建交易对象xt_trader = XtQuantTrader(mini_qmt_path, session_id)# 启动交易对象xt_trader.start()# 连接客户端connect_result = xt_trader.connect()if connect_result == 0:print('连接成功')from xtquant.xttype import StockAccount# QMT账号account_id = '1010573943'# 创建账号对象account = StockAccount(account_id)# 订阅账号res = xt_trader.subscribe(account)print(account)print(res)以上就是今天分享的全部内容。新手快速上手QMT,得详细了解其框架实操步骤!
(1)开户成功后入金10万后提交QMT申请流程
(2)申请过程全程线上,预计2个工作日申请完成。
(3)等待开通过程中,可以提供测试账号、安装配置流程、量化会员资料。
(4)开通成功后,会通过邮件发送你软件下载地址,登录账号后就可以使用。

福利1:惊喜佣金
福利2:领取完整教程
福利3:添加量化讨论群
福利4:提供专业量化问题解答
福利5:量化工具安装使用教程、视频
福利6:极速柜台,量化投资者专用,速度微秒级
福利7:提供服务器托管模式:ptrade策略+ldp极速柜台+vip定向服务器(限50人)

