L'objectif de profit dynamique et la stratégie de stop-loss d'ATR

Auteur:ChaoZhang est là., Date: 14 septembre 2023 à 16 h 22 h 53
Les étiquettes:

La logique de la stratégie

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:

  1. Calculer la fourchette moyenne réelle (ATR) sur une période (par exemple 20 jours)

  2. Dans la tendance haussière, l'objectif de profit/arrêt est le prix le plus élevé moins le multiple ATR

  3. Dans une tendance à la baisse, l'objectif de profit/arrêt est le prix le plus bas plus le multiple ATR

  4. Commerce inverse lorsque le prix dépasse l'objectif de profit/arrêt

  5. Changement de tendance lorsque le prix dépasse l'objectif de profit/arrêt

  6. 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.

Les avantages

  • 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 risques

  • 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

Résumé

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)
    
    

Plus de