
量化交易中常用的止盈、止损方法技巧总结
介绍量化交易中常用的固定比例止盈止损、ATR 动态止损和移动止损方法,结合风险收益比、仓位管理与回测验证,帮助量化交易者建立更可靠的退出规则。
对于量化交易者而言,进场信号决定何时开仓,退出规则则影响策略的风险收益结构。即使入场逻辑有效,如果止盈止损设置不合理,手续费、滑点和错误的成交假设仍可能侵蚀策略表现。
因此,量化交易止盈止损不能只依赖固定百分比,更需要结合价格波动、仓位规模和回测结果,建立可验证的退出机制。
一、固定比例止损与止盈
固定比例止损根据入场价格设定退出阈值。例如,做多入场价为 100,止损比例为 3%,触发价就是 97。
这种方法简单直观,适合建立基准策略,但缺点是无法适应不同品种的波动差异。固定止盈则在价格达到预设目标后退出,适用于收益目标明确的策略,但可能限制趋势行情中的潜在收益。
二、ATR 动态止损与移动止损
ATR(平均真实波幅)能够反映近期价格波动,适合用于调整止损距离。做多时,计算公式为:
止损价 = 入场价 − ATR × 止损倍数
假设入场价为 100、ATR 为 1.2、止损倍数为 2,则止损价为 97.6。若目标风险收益比为 2:1,对应的理论止盈价为 104.8。
下面的代码可以计算初始止盈价、止损价和理论仓位:
def plan_long(entry, atr, risk_budget,
atr_mult=2.0, reward_risk=2.0):
if entry <= 0 or atr <= 0 or risk_budget <= 0:
raise ValueError("Inputs must be positive")
if atr_mult <= 0 or reward_risk <= 0:
raise ValueError("Multipliers must be positive")
stop = entry - atr * atr_mult
if stop <= 0:
raise ValueError("Stop price must be positive")
risk_per_unit = entry - stop
target = entry + risk_per_unit * reward_risk
quantity = int(risk_budget / risk_per_unit)
return {
"stop": round(stop, 4),
"target": round(target, 4),
"quantity": quantity
}这里的 risk_budget 是允许承担的理论价格风险,不是投资总资金。示例未计入手续费、滑点和合约乘数,实际回测需要进一步调整。
移动止损则根据有利方向的价格变化逐步调整退出阈值,适合趋势跟踪策略,但不能保证盈利。
三、如何选择止盈止损组合
| 策略类型 | 可测试的组合 | 主要风险 |
|---|---|---|
| 均值回归 | 固定止损+均值目标 | 趋势行情中的持续亏损 |
| 趋势跟踪 | ATR 止损+移动止损 | 过早退出趋势 |
| 突破策略 | 关键价位止损+目标收益 | 假突破与跳空 |
| 短周期策略 | 价格阈值+时间退出 | 交易成本侵蚀收益 |
风险收益比并不等于实际盈利能力。假设平均盈利为 200 元、平均亏损为 100 元、胜率为 40%,每笔交易的理论期望为 20 元,尚未扣除交易成本。判断策略是否有效,还应比较净收益、最大回撤和交易次数。
四、回测中需要检查的关键问题
避免未来数据。 交易信号只能使用当时已经获得的数据,不能用尚未完成的 K 线决定交易结果。
模拟实际成交。 价格触及止损价不代表一定能按该价格成交,应考虑手续费、买卖价差、滑点和跳空。
处理同一根 K 线的冲突。 如果最高价触及止盈位、最低价同时触及止损位,仅凭 OHLC 数据通常无法确定先后顺序,应使用更细粒度的数据,或采用保守的成交假设。
进行样本外验证。 使用独立时间区间检验参数,并观察不同市场环境下的表现,避免只优化历史收益最高的结果。
五、用行情数据验证退出规则
历史回测与实时行情验证承担不同任务。量化交易者可以使用历史 K 线计算指标、检验止盈止损参数,再通过实时行情检查触发条件和数据异常处理。
AllTick 的 REST API 支持历史 K 线及最新报价查询,适合用于相应的历史分析和行情获取场景;WebSocket 可订阅实时最新成交价及 Tick 数据,适合验证实时价格触发逻辑。需要注意,实时 Tick 订阅不等于历史逐笔数据查询,WebSocket 也不能替代历史 K 线回测。具体数据能力应以对应的接口文档为准。
六、让退出规则经得起验证
有效的止盈止损机制,必须同时考虑触发条件、仓位规模、交易成本和样本外表现,而不是追求某一段历史中最漂亮的收益曲线。
开始下一轮回测前,可以查看 AllTick REST API 文档,了解历史行情查询方式;若策略需要实时价格触发验证,也可以查看 WebSocket 最新成交价订阅说明。根据策略周期确认所需数据类型,再开展回测和实时数据处理测试。