资源加载中... loading...

ATR可调节跟踪止损策略

Author: ChaoZhang, Date: 2023-10-25 15:08:04
Tags:

ATR可调节跟踪止损策略

本策略采用ATR指标计算动态止损线,实现风险控制的目的。

概述

该策略使用ATR指标计算动态止损线,当价格上涨时,止损线会随价格上涨而上调,实现利润的锁定。当价格下跌时,止损线保持不变,避免止损退出。ATR指标能够测量市场的波动性和风险,乘以系数后生成止损线,从而控制每单的风险敞口。

原理

该策略使用ATR指标和Highest函数组合计算动态止损线。具体计算公式如下:

TS=highest(high-Mult*atr(Atr),Hhv)

其中,Atr代表ATR周期参数,Hhv代表Highest函数查找周期参数,Mult代表ATR系数。

该公式的计算思路是,先计算出ATR指标的值,再乘以系数Mult,得到止损缓存区的范围。然后通过Highest函数查找过去Hhv周期内的最高价,再减去止损缓存区间范围,得到动态的止损线TS。

当价格上涨时,最高价会不断创新高,从而带动止损线向上移动,实现利润的锁定。当价格下跌时,止损线会保持之前的高点,避免了止损退出。

优势

  1. 动态止损,及时锁定利润

该策略中的止损线是动态调整的,能够跟踪价格上涨后的最高点,实现利润的及时锁定。相比固定止损更具优势。

  1. 避免无谓止损

当价格出现正常回调或止损过密时,固定止损线很容易被触发停止交易。该策略能够在价格下跌时保持止损线不变,避免无谓的止损退出。

  1. 可调节止损幅度

通过调节ATR周期参数和系数参数,可以控制止损线调整的灵敏度,实现不同程度的止损。

  1. 风险可控

止损线的范围由ATR动态计算,能够根据市场波动性设定合理的止损幅度,从而控制每单的风险敞口。

风险

  1. 行情剧烈波动时止损过于激进

当行情出现剧烈波动时,ATR会快速上涨,止损线也会快速上移,增加无谓止损的概率。此时需要适当调整ATR周期参数,降低止损线调整的敏感度。

  1. 大幅度行情反转时难以应对

该策略难以应对大幅度的行情反转,此时止损线可能会过于滞后,应及时降低仓位规避风险。

  1. 参数优化难度较大

ATR周期、Highest周期和系数参数需要综合优化,优化难度较大。建议采用步进优化法多组合测试。

优化思路

  1. 优化ATR周期参数

适当增大ATR周期参数,可以减少止损线过于频繁调整的情况,但会增加单笔损失。

  1. 优化Highest周期参数

增大Highest周期参数可以让止损线更稳定,但需要权衡跟踪速度。

  1. 测试不同的ATR系数

根据不同品种的特点选择合适的ATR系数,增大系数将止损幅度,减小系数降低单笔损失。

  1. 结合趋势 indictor

结合趋势指标辅助决策,可以减少止损线被反转清除的概率。

总结

该策略整体具有动态止损、风险可控的优点,适用于趋势行情。但需要注意防止行情剧烈波动带来的风险,同时参数优化难度较大。通过合理的参数设置和优化,以及辅助技术分析,可以将该策略运用于实盘交易中。


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ceyhun

//@version=4
strategy("ATR Trailing Stoploss Strategy ",overlay=true)

Atr=input(defval=5,title="Atr Period",minval=1,maxval=500)
Hhv=input(defval=10,title="HHV Period",minval=1,maxval=500)
Mult=input(defval=2.5,title="Multiplier",minval=0.1)
Barcolor=input(true,title="Barcolor")

TS=highest(high-Mult*atr(Atr),Hhv),barssince(close>highest(high-Mult*atr(Atr),Hhv) and close>close)
Color=iff(close>TS,color.green,iff(close<TS,color.red,color.black))
barcolor(Barcolor? Color:na)

plot(TS,color=Color,linewidth=3,title="ATR Trailing Stoploss")

Buy  = crossover(close,TS)
Sell = crossunder(close,TS)

if Buy
    strategy.entry("Buy", strategy.long, comment="Buy")
    
if Sell
    strategy.entry("Sell", strategy.short, comment="Sell")

更多内容