Q-CodeQ-Code 打开工作台

ATR 波动止损

风险控制A股风险 中入门更新 2026-09-24#ATR#止损#仓位

不预测方向,只根据波动率设置动态风险边界,适合作为其他策略的独立风控模块。

模块目标

不预测方向,只用标的自身波动率动态计算止损距离和初始仓位,使不同波动水平的标的承担相近的单笔风险。该模块设计为独立风控组件,可挂接在任何入场信号的策略之后。

核心参数

  • ATR 周期:14 个交易日;
  • 初始止损:2.5 倍 ATR;
  • 跟踪止损:3 倍 ATR;
  • 单笔风险预算:账户权益的固定比例;
  • 最小交易单位:100 股(A 股整手约束)。

ATR 与仓位计算

TRt=max⁡(Ht−Lt,  ∣Ht−Ct−1∣,  ∣Lt−Ct−1∣)TR_t = \max\left(H_t - L_t,\; |H_t - C_{t-1}|,\; |L_t - C_{t-1}|\right)

ATRt=1n∑i=0n−1TRt−iATR_t = \frac{1}{n}\sum_{i=0}^{n-1} TR_{t-i}

初始风险每股 =k×ATR= k \times ATR(kk 为止损倍数),理论股数 =⌊权益×风险比例k×ATR⌋= \left\lfloor \dfrac{权益 \times 风险比例}{k \times ATR} \right\rfloor,再按最小交易单位与单标的权重上限约束。

止损移动规则

多头止损价从最高价减去止损倍数乘 ATR 得到,空头反之。止损价只允许向更有利的方向移动,不因价格回撤而放宽。初始阶段用更紧的 2.5 倍,持仓企稳后切换为 3 倍跟踪,切换规则由参数统一控制。

执行约束

跳空穿越止损价时不能假设按止损价成交,应以开盘可成交价格处理滑点。停牌、涨跌停和数据不足时禁止新开仓。波动率在极端行情中会跳升,导致 ATR 快速放大、仓位骤降,模块使用者应理解这是风险控制特性而非缺陷。

验证状态

待验证。需要完成:不同止损倍数下的持仓周期与单笔亏损分布;跳空开盘的成交假设检验;与固定比例止损的对照。本文不提供任何未实测的收益或回撤数字。

参考文献与延伸

[1] Wilder, J. W. (1978). New Concepts in Technical Trading Systems. Trend Research.(ATR 的原始定义)

[2] Covel, M. W. (2007). The Complete TurtleTrader. HarperBusiness.(以波动率为单位的风险头寸方法,即海龟交易系统的仓位思想)

[3] Chande, T. S., & Kroll, S. (1994). The New Technical Trader. Wiley.(Chande-Kroll 型 ATR 跟踪止损变体)

[4] Q-Code 量化策略工作台

策略逻辑结构

  1. 交易信号 — 上游提供开平仓事件
  2. ATR计算 — 14周期真实波幅
  3. 风险预算 — 按权益确定允许亏损
  4. 仓位换算 — 风险距离映射仓位
  5. 动态止损 — 按最高价和ATR收紧
  6. 订单执行 — 约束成交与交易单位

AI 生成提示词

复制以下提示词,打开 Q-Code 工作台粘贴到 AI 对话框,即可自动生成该策略的 QMT 策略代码(单个完整 .py 文件,支持 QMT 回测与实盘)。

请为 QMT 实现一个可独立运行的 ATR 波动止损策略模块。ATR 周期为 14,初始止损 2.5 倍 ATR,持仓后改为 3 倍 ATR 跟踪止损,止损方向只收紧不放宽。每笔交易风险预算按账户权益比例计算,理论仓位向下取整到最小交易单位,并限制单标的权重。兼容股票回测和实盘,跳空穿越止损时按实际可成交价处理。全部参数写入 init,输出单个完整 Python 文件,不依赖任何外部配置文件。
用自然语言,生成你的 QMT 策略
注册即赠 200 积分,约可生成 5 次 · 支持 Kimi / GLM / DeepSeek
打开 Q-Code 工作台