Skip to content

QMT 收紧本地文件和网络:次方量化的应对方案来了 ​

QMT自前段时间禁用miniQMT模式之后,最近针对大QMT也增加了新的限制,最近用 QMT 的朋友,应该陆续收到了券商的通知:QMT 客户端里的内置 Python 策略,将被禁止本地文件读写和网络连接。

1792914365_fejyipd8wb1792914356851.png

一、这次到底做了哪些限制 ​

这次调整的本质,是把QMT从"半开放的本地量化工具"收紧为"封闭的策略执行环境"。对纯内置策略用户几乎零影响,但对重度依赖外部数据、外部信号的玩法,是实打实的洗牌。

1. 本地文件读写被拦截 ​

策略里涉及读写本地文件的操作,都会被拦截并执行失败,包括 open()、read()、write(),也包括 read_csv、to_csv 这类封装好的方法。

2. 网络连接被全面禁止 ​

  • 不能发起任何网络连接,HTTP、TCP、UDP 都不行。
  • 不能连局域网或本机上其他设备,包括指定 IP 和端口的连接。
  • 不能连本机或局域网的数据库,MySQL、Redis、SQLite 都在内。

3. 装第三方库也绕不过去 ​

第三方库只要涉及文件读写或网络连接,一样会被拦截。想靠换个库来绕开限制,行不通。

4. 唯一的口子 ​

官方明确的豁免是:使用内置 Python,且交易信号完全在 QMT 系统内部产生、不与外部环境交互的策略,不受影响。 用 get_market_data_ex 读取 QMT 下载的历史行情、在客户端里打印日志,也不受影响。另外,这是管理端的菜单功能控制,不需要升级客户端。

5. 两个还没落地的问题 ​

  • 数据商白名单:官方当时表示会评估是否对万得、聚源、财汇、tushare 这类专业数据商开放网络访问白名单,结果请关注券商后续通知。个人自建的数据服务、爬虫接口,基本不会被放行。
  • 中间状态怎么保存:以前不少策略把运行状态写成 CSV 或 pickle 存在本地,现在这条路走不通了。官方的说法是,替代方案还在和供应商沟通验证。

二、次方量化的应对方案 ​

考虑到次方量化平台的很多用户,都在使用QMT进行策略实盘,QMT的本次限制,使得QMT无法通过网络请求的方式来获取次方量化平台的策略信号。为此我们上线了新功能:导出完整实盘代码。

在“我的实盘”里选择一个已经运行的实盘策略,就能把这个策略的完整逻辑导出成一份脚本。这份脚本:

  • 不依赖网络访问:不联网,不依赖平台服务,也不需要 API Key。
  • 不读写任何文件:运行状态用 QMT 自带的存储接口保存,每次调仓后写入,下次启动时读取。
  • 只用 QMT 自己的行情做信号计算:行情取自 QMT 已下载的数据,信号在 QMT 内部算出,完全落在官方豁免的范围里。

把它粘贴进 QMT 的 Python 策略,到了策略设定的执行时间,脚本自己计算、自己下单。

三、导出的代码有哪些优势 ​

1. 和平台完全一致的决策逻辑 ​

动量计算、止盈止损、冷却期、涨跌停和停牌的处理,都沿用平台策略引擎的逻辑。比如策略开启了涨停过滤,就买入除涨停标的外动量最强的;没开启时,要买的标的涨停就空仓等待。

2. 支持多个策略同时运行,策略内部做资金控制 ​

每个导出的脚本都带着它自己的实盘资金和虚拟持仓。买入按本策略的资金规划,卖出只处理本策略自己的份额,同一账户里其他策略或手动买入的同一只标的不会被误卖。多个策略可以同时在一个 QMT 里运行,互不干扰。

3. 支持设置交易委托方式、账户类型和拆单 ​

导出时就可以选好下单参数:

  • 账户类型:普通账户或信用账户。
  • 买卖类型和委托方式:买入、卖出的 opType 和报价类型(默认买入卖五价、卖出买五价),可按你的习惯调整。
  • 委托超时处理:超时未成交自动撤单,并按剩余数量重新挂单,次数可设。
  • 拆单:单笔数量大时按份数均分,或每笔在设定区间内随机,并可设置拆单间隔。

4. 支持动量轮动策略和资产配置策略 ​

目前这两类策略都可以导出:动量轮动策略,以及资产配置(全天候)策略。

5. 比传统网络请求方式延迟更低,执行更快 ​

以前每次调仓都要先联网拉取信号,再下单,中间多了网络请求这一步。导出的脚本在本地直接计算、直接下单,少了一次网络往返,也不再受外部服务可用性的影响,执行更快。

四、具体操作流程 ​

  1. 进入我的实盘:登录次方量化网页版,进入“我的实盘”,选中要导出的实盘策略,点击“导出实盘代码”。小程序里也有入口,会引导你到网页版完成导出。

1792938382_rooo6snxgk1792938381821.png

1792938418_hg9b98e3wp1792938417955.png

  1. 选择平台:选择 QMT。

1792938565_a26uk12emn1792938565050.png

  1. 设置 QMT 下单参数:账户类型、买卖类型、委托方式、超时撤单与重新挂单、拆单等,按你的需要设置。

1792938597_5gx1avrzir1792938596664.png

  1. 复制代码:代码生成后会弹出代码窗口,复制整份代码。

1792938440_wnx5idkhlm1792938440117.png

  1. 粘贴进 QMT:在 QMT 新建 Python 策略,整份粘贴进去,然后保存。

  2. 配置QMT模型交易:在QMT模型交易界面中选择策略和账户,开启运行。

之后如果重新导出:覆盖脚本后,以 QMT 本地保存的状态为准,从它接着往下算,平台上补仓的资金也会自动补进去。

五、使用前请了解 ​

本地运行有它的代价,我们不想回避:

1. 信号数量可能和平台不一致。 脚本在你本机计算,行情数据来源、取价时点和平台不完全相同,算出来的数量可能有偏差,这是正常的。平台无法获知你本地脚本的运行情况,也无法替你核对。

2. 需要保持 QMT 每个交易日运行。 脚本靠 QMT 的定时任务触发。

3. 一份代码最多用 360 天。 QMT 里历史分钟行情最多只能取一年,脚本在状态日期满 360 天后会提示“停止运行”,不再下任何委托。到期前请在平台重新创建实盘,再导出新的代码。

4. 脚本里的状态是推演出来的虚拟状态,不是你账户的真实持仓。 如果你手动买卖过相关标的,请自行核对。

5. 旧版本代码仍然保留。 在“自动交易”页面可以下载。它通过HTTP网络请求接收平台推送的信号,只在你的 QMT 还能访问外部网络时才能用,一旦被限制联网就会失效,建议尽早切换到导出的新代码。

Ptrade 版本也在准备中,即将开放。

六、最后 ​

QMT 这次收紧,方向很明确:让策略在客户端内部自成一体。信号放在本地算,链路更短,也不再依赖外部服务。次方量化选择开放策略源码下载,也是本着公开透明的原则,让大家在使用策略时更加放心和方便。


风险提示:本文仅为功能介绍,不构成任何投资建议。量化策略的历史表现不代表未来,投资有风险,入市需谨慎。QMT 的限制范围、生效时间以券商官方通知为准。

蜀ICP备20013273号-1 | 返回主站