量化QMT保姆级开户教程!QMT高手都在用的策略封装技巧,看完直接少写1000行代码!
发布时间:14小时前阅读:45

QMT 完全支持把策略封装成函数模块,多个策略可以共用公共工具代码。具体做法是:在 QMT 的 Python 目录下创建一个公共 .py 文件,把常用的函数放进去,其他策略用 import 导入就能用。
QMT 能不能把策略封装成模块,多个策略共用公共代码? 答案是:完全可以。
QMT 本身就支持 Python 的模块化开发,你可以把常用的功能——比如计算均线、风控检查、下单逻辑——封装成独立的函数或类,放在一个公共文件里。以后写新策略时,直接导入这个文件就行,不用每次都复制粘贴一遍。
为什么需要这么做? 刚开始写策略的时候,很多人都是一个文件从头写到尾。但当你有了三五个策略之后,问题就来了:
重复代码太多:每个策略都要写一遍获取行情、计算指标、风控检查的代码,改一个地方要改好几个文件。
维护成本高:万一发现某个函数有 bug,你得挨个策略去修,很容易漏掉。
代码风格不统一:这个策略用 ma_calc,那个策略用 calculate_ma,时间长了自己都记不清。
所以,把公共代码抽出来,做成一个“工具库”,是个很自然的想法。
具体怎么做? 第一步:创建公共代码文件 在 QMT 安装目录下的 python 文件夹里,新建一个 .py 文件,比如叫 my_utils.py。这个文件夹也是你存放策略的地方,所以放在一起比较方便。
第二步:把常用功能写进去 在 my_utils.py 里,你可以放各种公共函数。比如:
python
my_utils.py
def calculate_ma(price_list, period):
"""计算移动平均线"""if len(price_list) < period: return Nonereturn sum(price_list[-period:]) / perioddef check_risk(position, max_position=0.8):
"""检查仓位是否超限"""return position <= max_positiondef format_log(message, level=“INFO”):
"""统一日志格式"""return f"[{level}] {message}"第三步:在策略里导入使用 写策略的时候,直接在开头导入就行:
python
我的双均线策略.py
from my_utils import calculate_ma, check_risk, format_log
def init©:
C.stock = "000001.SZ"C.short_period = 5C.long_period = 20def handlebar©:
# 获取收盘价close_list = [...] # 省略获取数据的代码# 直接用导入的函数ma5 = calculate_ma(close_list, C.short_period)ma20 = calculate_ma(close_list, C.long_period)if ma5 and ma20: if ma5 > ma20: print(format_log("金叉,准备买入")) # 下单逻辑...这样,你的策略文件会变得很干净,核心逻辑一目了然。
进阶玩法:用类来封装策略模板 如果你想让代码更“高级”一点,可以用类来封装一个策略基类。比如定义一个 BaseStrategy 类,把风控、日志、数据获取这些通用方法都放进去,然后具体的策略继承这个类,只需要实现信号生成的部分。
python
base_strategy.py
class BaseStrategy:
def __init__(self, stock_code): self.stock = stock_code self.position = 0def get_data(self, C): """获取行情数据""" # 通用数据获取逻辑 passdef risk_check(self): """风控检查""" if self.position > 0.8: print("仓位过高,需要减仓") return False return Truedef log(self, msg): """统一日志""" print(f"[{self.stock}] {msg}")具体策略
class MyMAStrategy(BaseStrategy):
def generate_signal(self, C): """子类只需要实现信号生成""" # 双均线逻辑... pass这样做的好处是,所有策略共用同一套风控和日志逻辑,风格统一,维护也方便。
几个需要注意的地方 文件位置要对:公共代码文件必须放在 QMT 能找到的目录里,通常是 python 文件夹。如果导入失败,先检查文件是不是放对了地方。
避免共享状态:公共代码里尽量不要存全局变量,否则多个策略同时运行时可能会互相干扰。
性能考虑:如果某个函数计算量很大,比如复杂的指标计算,可以考虑用 NumPy 优化,别让公共函数拖慢策略执行。
敏感信息别硬编码:账户信息、API 密钥这些不要写在公共代码里,万一文件被分享出去就麻烦了。
总结一下 QMT 支持模块化开发,你可以:
创建一个公共 .py 文件,把常用函数放进去
在策略里用 import 导入
需要更高级的封装,可以用类继承的方式
这样做的好处是代码复用、维护方便、风格统一。刚开始可以从几个简单的工具函数入手,慢慢积累自己的“量化工具箱”,以后写新策略会越来越快。
温馨提示:投资有风险,选择需谨慎。
下一篇资讯:
暂无下一篇
-
上市公司发可转债,账户里多出的「配债」是什么?和可转债打新有啥区别?
2026-09-08 10:56
-
为什么9:20和14:57之后挂的单撤不回来?(附撤单时间表)
2026-09-08 10:56
-
为何账户有钱也不能打新?新股打新额度怎么算?4大误区提示
2026-09-08 10:56


问一问

+微信
分享该文章
