AllTick
量化交易中常用的止盈、止损方法技巧总结
量化交易技术指标 历史市场数据风险管理 止盈止损

量化交易中常用的止盈、止损方法技巧总结

介绍量化交易中常用的固定比例止盈止损、ATR 动态止损和移动止损方法,结合风险收益比、仓位管理与回测验证,帮助量化交易者建立更可靠的退出规则。

AllTick阅读 1 分钟

对于量化交易者而言,进场信号决定何时开仓,退出规则则影响策略的风险收益结构。即使入场逻辑有效,如果止盈止损设置不合理,手续费、滑点和错误的成交假设仍可能侵蚀策略表现。

因此,量化交易止盈止损不能只依赖固定百分比,更需要结合价格波动、仓位规模和回测结果,建立可验证的退出机制。

一、固定比例止损与止盈

固定比例止损根据入场价格设定退出阈值。例如,做多入场价为 100,止损比例为 3%,触发价就是 97。

这种方法简单直观,适合建立基准策略,但缺点是无法适应不同品种的波动差异。固定止盈则在价格达到预设目标后退出,适用于收益目标明确的策略,但可能限制趋势行情中的潜在收益。

二、ATR 动态止损与移动止损

ATR(平均真实波幅)能够反映近期价格波动,适合用于调整止损距离。做多时,计算公式为:

止损价 = 入场价 − ATR × 止损倍数

假设入场价为 100、ATR 为 1.2、止损倍数为 2,则止损价为 97.6。若目标风险收益比为 2:1,对应的理论止盈价为 104.8。

下面的代码可以计算初始止盈价、止损价和理论仓位:

text
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 最新成交价订阅说明。根据策略周期确认所需数据类型,再开展回测和实时数据处理测试。

立即开始接入市场数据

几秒内生成免费 API 密钥,通过一个端点连接所有市场。