Stratégie dynamique de stop-profit et de stop-loss d'ATR


Date de création: 2023-09-14 16:22:53 Dernière modification: 2023-09-14 16:22:53
Copier: 0 Nombre de clics: 904
1
Suivre
1617
Abonnés

Principe de stratégie

La stratégie utilise un stop-loss dynamique pour effectuer des transactions. Le stop-loss est ajusté en temps réel en fonction des prix et des fluctuations actuels.

Logique de la transaction:

  1. Calculer l’amplitude réelle moyenne des fluctuations sur une période donnée (par exemple 20 jours)

  2. En position haussière, le stop loss est le prix maximum moins le ATR multiplié par

  3. Le stop-loss est le prix le plus bas multiplié par l’ATR lorsqu’il est en baisse.

  4. Le prix dépasse le seuil de stop-loss

  5. Modifier la tendance lorsque le prix dépasse le point de rupture

  6. Ajustez le stop loss en fonction de la nouvelle situation

Cette stratégie exploite pleinement l’ATR, qui met automatiquement en place des arrêts de perte, permettant un suivi dynamique.

Avantages stratégiques

  • ATR pour calculer automatiquement le stop loss

  • Adaptation dynamique, suivi des prix en temps réel

  • Arrêter les arrêts de perte en temps opportun et contrôler les risques

Risque stratégique

  • Les paramètres ATR doivent être testés et optimisés plusieurs fois.

  • Les dommages sont trop rapprochés et facilement évités.

  • Attention aux changements en temps réel des valeurs ATR

Résumer

Cette stratégie utilise l’ATR pour régler dynamiquement le stop loss, permettant un suivi automatique. Optimiser les paramètres ATR permet d’obtenir un meilleur effet de stop loss.

Code source de la stratégie
/*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)