Stratégie ADX + RSI


Date de création: 2023-09-27 16:27:39 Dernière modification: 2023-09-27 16:27:39
Copier: 0 Nombre de clics: 2077
1
Suivre
1617
Abonnés

Aperçu

Il s’agit d’une stratégie de suivi de tendance combinant les indicateurs ADX et RSI. La stratégie utilise le RSI pour déterminer les situations de survente et de survente pour émettre des signaux de négociation, tout en utilisant l’ADX pour déterminer la tendance du marché et filtrer les transactions dont la tendance n’est pas évidente.

Principe de stratégie

  1. Le RSI à 7 cycles est utilisé pour déterminer les surachats et les survente
  • RSI inférieur à 30 est considéré comme une survente
  • Le RSI est considéré comme un sur-achat si il est supérieur à 70.
  1. Utilisation de l’ADX pour juger les tendances
  • Si le ADX est supérieur à 30, la tendance est évidente.
  • ADX inférieur à 30 indique une tendance négative
  1. Règles d’entrée
  • Faire plus lorsque le RSI est inférieur à 30 et l’ADX est supérieur à 30
  • Faire un short quand le RSI est supérieur à 70 et l’ADX est supérieur à 30
  1. Arrêt de l’arrêt
  • Il existe des options d’arrêt de perte, vous pouvez choisir d’arrêter la perte d’arrêt de clôture ou d’arrêter la perte d’arrêt d’oscillation
  • La méthode de stop loss est basée sur le prix de clôture.
  • La méthode de stop loss par oscillation est basée sur les hauts et les bas des fluctuations récentes des prix.

Analyse des avantages

  1. L’indicateur RSI est efficace pour détecter les points d’achat et de vente excessifs et réduire les pièges d’achat et de vente

  2. L’indicateur ADX permet de filtrer les situations où la tendance n’est pas évidente et d’éviter d’être emprisonné dans une situation de choc

  3. Des options de stop-loss permettent de mieux maîtriser les risques

  4. Les stratégies sont simples, faciles à comprendre et adaptées aux débutants.

  5. Les paramètres de la stratégie peuvent être optimisés en ajustant les paramètres tels que le cycle du RSI, la zone de survente et de survente, le cycle de l’ADX

Analyse des risques

  1. Le RSI est exposé à un risque de rebond, avec des signaux de sur-achat et de sur-vente.

  2. L’ADX estime que la tendance est en retard et risque de manquer un tournant

  3. La mise en place d’un point d’arrêt déraisonnable peut entraîner des pertes

  4. La stratégie est simple, avec un risque de sur-optimisation

  5. Optimisation des paramètres pour obtenir de meilleurs résultats

Direction d’optimisation

  1. Vous pouvez optimiser les paramètres du RSI, ajuster les intervalles de survente et trouver la meilleure combinaison de paramètres

  2. Il est possible de tester l’ADX de différentes périodes pour trouver les paramètres les plus appropriés pour déterminer la tendance

  3. Vous pouvez tester différentes stratégies de stop-loss pour trouver les réglages qui correspondent le mieux à votre stratégie.

  4. Il est possible d’ajouter des filtres de tendance pour éviter les transactions à contre-courant.

  5. Il peut être combiné avec d’autres indicateurs pour rendre la stratégie plus avantageuse.

Résumer

Cette stratégie intègre les avantages des deux indicateurs classiques RSI et ADX, permet de détecter efficacement les tendances et d’éviter les chocs, est une stratégie de suivi de tendance simple et pratique. La stratégie a plus d’espace pour l’optimisation et peut obtenir de meilleurs résultats en ajustant la combinaison de paramètres.

Code source de la stratégie
/*backtest
start: 2023-09-19 00:00:00
end: 2023-09-26 00:00:00
period: 15m
basePeriod: 5m
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/
// © tweakerID

// This is a strategy that uses the 7 Period RSI to buy when the indicator is shown as oversold (OS) and sells when 
// the index marks overbought (OB). It also uses the ADX to determine whether the trend is ranging or trending
// and filters out the trending trades. Seems to work better for automated trading when the logic is inversed (buying OB 
// and selling the OS) wihout stop loss.

//@version=4
strategy("ADX + RSI Strat", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.04, calc_on_every_tick=false)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))


//SL & TP Inputs
i_SL=input(false, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(20, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=0, step=.2, title="SL Expander")
i_TPExpander=input(defval=0, step=.2, title="TP Expander")
i_reverse=input(true, title="Reverse Trades")

//SL & TP Calculations
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)
bought=strategy.position_size != strategy.position_size[1]
LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0))*i_SLExpander)
SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0))*i_SLExpander)
lTP=strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0))+((valuewhen(bought, atr(14), 0))*i_TPExpander))
sTP=strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0)-strategy.position_avg_price)-((valuewhen(bought, atr(14), 0))*i_TPExpander)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0
SL= islong ? LSL : isshort ? SSL : na
TP= islong ? lTP : isshort ? sTP : na

//RSI Calculations
RSI=rsi(close, 7)
OS=input(30, step=5)
OB=input(80, step=5)

//ADX Calculations
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
adxlevel=input(30, step=5)


//Entry Logic
BUY = sig < adxlevel and (RSI < OS) 
SELL = sig < adxlevel and (RSI > OB) 

//Entries
strategy.entry("long", strategy.long, when=i_reverse?SELL:BUY)
strategy.entry("short", strategy.short, when=not i_reverse?SELL:BUY)
//Exits
if i_SL
    strategy.exit("longexit", "long", stop=SL, limit=TP)
    strategy.exit("shortexit", "short", stop=SL, limit=TP)

//Plots
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL")
plot(i_SL ? TP : na, color=color.green, style=plot.style_cross, title="TP")
plotshape(BUY ? 1 : na, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bullish Setup")
plotshape(SELL ? 1 : na, style=shape.triangledown, location=location.abovebar, color=color.red, title="Bearish Setup")