Stratégie ATR Super Trend


Date de création: 2024-03-29 11:29:15 Dernière modification: 2024-03-29 11:29:15
Copier: 2 Nombre de clics: 707
1
Suivre
1617
Abonnés

Stratégie ATR Super Trend

Aperçu

Il s’agit d’une stratégie basée sur l’indicateur de super-tendance et l’indicateur ATR. L’idée principale de cette stratégie est d’utiliser l’indicateur de super-tendance pour déterminer la direction de la tendance du marché actuel et de négocier lorsque l’indicateur de super-tendance change.

Principe de stratégie

Le principe de cette stratégie est le suivant:

  1. Calculer la valeur de l’indicateur de super-tendance, qui génère un signal d’achat ou de vente lorsque l’indicateur de super-tendance change.
  2. Pour calculer le prix d’arrêt et le prix d’arrêt à l’aide de l’indicateur ATR, le prix d’arrêt est multiplié par le prix actuel plus la valeur d’ATR diminuée par un multiple, et le prix d’arrêt est le prix d’arrêt multiplié par le rapport risque/bénéfice.
  3. La taille de la position est calculée en fonction d’un certain pourcentage du solde du compte et du prix stop-loss pour contrôler le risque de chaque transaction.
  4. Lorsqu’un signal d’achat est généré, ouvre une position plus, le prix d’arrêt est le prix de génération du signal moins l’ATR multiplié par un multiple, le prix d’arrêt est le prix de génération du signal plus l’ATR multiplié par un multiple multiplié par le rapport de risque-bénéfice.
  5. Lorsque le signal de vente est généré, la position ouverte est vide, le prix d’arrêt est le prix à la génération du signal plus le ATR multiplié par un multiple, le prix d’arrêt est le prix à la génération du signal moins le ATR multiplié par un multiple multiplié par le rapport de gain au risque.

Avantages stratégiques

Les avantages de cette stratégie sont les suivants:

  1. La combinaison de suivi des tendances et d’indicateurs de volatilité permet de capturer efficacement les tendances tout en contrôlant les risques.
  2. La taille de la position est calculée automatiquement en fonction du solde du compte et du degré de risque, sans ajustement manuel, facile à mettre en œuvre.
  3. Les paramètres peuvent être ajustés de manière flexible pour s’adapter à différents marchés et variétés.

Risque stratégique

Les risques de cette stratégie sont les suivants:

  1. Les signaux d’achat et de vente fréquents peuvent entraîner des coûts de transaction et des points de glissement plus élevés dans un marché en crise.
  2. Les taux fixes de stop loss et de stop-loss peuvent ne pas s’adapter aux changements du marché, ce qui entraîne un stop loss prématuré ou un profit trop faible.
  3. Le calcul de la taille de la position dépend de la volatilité historique, qui peut entraîner des retraits plus importants si la volatilité augmente soudainement.

Les mesures suivantes peuvent être prises pour contrer ces risques:

  1. Il a ajouté des conditions de filtrage de signaux et réduit la fréquence des transactions.
  2. Optimiser les méthodes de calcul des arrêts et des arrêts, par exemple en utilisant des arrêts mobiles ou des arrêts dynamiques.
  3. Introduire des facteurs de contrôle du risque dans le calcul de la position, par exemple réduire la position en cas de rupture de la volatilité.

Orientation de l’optimisation de la stratégie

Cette stratégie peut être optimisée dans les domaines suivants:

  1. L’introduction de plus d’indicateurs techniques, tels que le MACD, le RSI, etc., comme conditions auxiliaires pour le jugement des tendances et le filtrage des signaux, améliore l’exactitude des signaux.
  2. Optimiser les paramètres de l’indicateur de super-tendance et de l’indicateur ATR pour trouver la combinaison optimale de paramètres pour différents marchés et variétés.
  3. L’introduction d’un plus grand nombre de facteurs de contrôle du risque dans le calcul des positions, tels que le retrait maximal du compte, le risque maximal d’une transaction, etc., améliore la solidité de la stratégie.
  4. Augmenter les stratégies de stop-loss, telles que les stop-loss partiels, les stop-loss mobiles, etc., pour maintenir la croissance des bénéfices.

Ces optimisations permettent d’améliorer la rentabilité et la stabilité des stratégies, tout en réduisant les risques liés aux stratégies et en les adaptant aux différentes conditions du marché.

Résumer

La stratégie combine des indicateurs de super-tendance et des indicateurs ATR pour capturer efficacement les tendances tout en contrôlant les risques. Le calcul de la taille de la position optimale permet de contrôler le risque de chaque transaction. Cependant, la stratégie peut entraîner des coûts de transaction et des retraits plus élevés dans les marchés en crise.

Code source de la stratégie
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradez99

//@version=5
strategy('Supertrend', overlay=true, format=format.price, precision=2)

Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white
shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white
//fill(mPlot, upPlot, title='UpTrend Highligter', color=longFillColor)
//fill(mPlot, dnPlot, title='DownTrend Highligter', color=shortFillColor)

multiplier = input.float(title="ATR multiplier", defval = 1.5)
rr           = input.float(title="Risk:Reward", defval=1.0)
riskPerTrade = input.float(title="Risk Per Trade %", defval=1.0)
atr3 = ta.atr(14)

//calculate stops and targets 
longstop = close - (atr3 * multiplier)
shortstop = close + (atr3 * multiplier)
longStopDistance  = close - longstop
shortStopDistance = shortstop - close
longTarget  = close + (longStopDistance * rr)
shortTarget = close - (shortStopDistance * rr)

// Save stops & targets
var t_stop = 0.0
var t_target = 0.0

longCondition = buySignal 
if (longCondition)
    t_stop := longstop
    t_target := longTarget
    positionSize = math.floor((strategy.equity * (riskPerTrade/100)) / (close - t_stop))
    strategy.entry("Long", strategy.long, qty = positionSize)

shortCondition = sellSignal 
if (shortCondition)
    t_stop := shortstop
    t_target := shortTarget
    positionSize = math.floor((strategy.equity * (riskPerTrade/100)) / (t_stop - close))  
    strategy.entry("Short", strategy.short, qty = positionSize)

strategy.exit(id="Long Exit", from_entry="Long", limit=t_target, stop=t_stop)
strategy.exit(id="Short Exit", from_entry="Short", limit=t_target, stop=t_stop)