Cette stratégie utilise des objectifs de profit dynamiques et des arrêts de pertes qui s'ajustent en fonction du prix et de la volatilité actuels.
La logique est la suivante:
Calculer la fourchette moyenne réelle (ATR) sur une période (par exemple 20 jours)
Dans la tendance haussière, l'objectif de profit/arrêt est le prix le plus élevé moins le multiple ATR
Dans une tendance à la baisse, l'objectif de profit/arrêt est le prix le plus bas plus le multiple ATR
Commerce inverse lorsque le prix dépasse l'objectif de profit/arrêt
Changement de tendance lorsque le prix dépasse l'objectif de profit/arrêt
Ajustement de l'objectif/arrêt des bénéfices en fonction de la nouvelle tendance
La stratégie tire parti de l'ATR pour définir automatiquement des objectifs et des arrêts de profit dynamiques, ce qui permet de verrouiller les bénéfices en temps opportun et de prévenir des pertes excessives.
ATR calcule automatiquement les niveaux de profit/stop
Traces d'ajustement dynamique du prix en temps réel
Contrôle du risque de prise de profit et de cessation en temps opportun
Les paramètres ATR nécessitent une optimisation
S' il s' arrête trop près, il risque d' être arrêté.
Besoin de surveiller en temps réel les changements ATR
Cette stratégie utilise l'ATR pour définir dynamiquement les niveaux profit/stop pour le trailing automatique.
/*backtest start: 2023-01-01 00:00:00 end: 2023-09-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Dhananjay Volatility stop strategy v1.0", overlay=true) length = input(20) mult = input(1) atr_ = atr(length) max1 = max(nz(max_[1]), close) min1 = min(nz(min_[1]), close) is_uptrend_prev = nz(is_uptrend[1], true) stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_ vstop_prev = nz(vstop[1]) vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop) is_uptrend = close - vstop1 >= 0 is_trend_changed = is_uptrend != is_uptrend_prev max_ = is_trend_changed ? close : max1 min_ = is_trend_changed ? close : min1 vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1 plot(vstop, color = is_uptrend ? green : red, style=line, linewidth=2) bearish = close < vstop bullish = close > vstop if (bullish) strategy.entry("Buy", strategy.long, 1) if (bearish) strategy.entry("Sell", strategy.short, 1)