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.
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
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
Des options de stop-loss permettent de mieux maîtriser les risques
Les stratégies sont simples, faciles à comprendre et adaptées aux débutants.
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
Le RSI est exposé à un risque de rebond, avec des signaux de sur-achat et de sur-vente.
L’ADX estime que la tendance est en retard et risque de manquer un tournant
La mise en place d’un point d’arrêt déraisonnable peut entraîner des pertes
La stratégie est simple, avec un risque de sur-optimisation
Optimisation des paramètres pour obtenir de meilleurs résultats
Vous pouvez optimiser les paramètres du RSI, ajuster les intervalles de survente et trouver la meilleure combinaison de paramètres
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
Vous pouvez tester différentes stratégies de stop-loss pour trouver les réglages qui correspondent le mieux à votre stratégie.
Il est possible d’ajouter des filtres de tendance pour éviter les transactions à contre-courant.
Il peut être combiné avec d’autres indicateurs pour rendre la stratégie plus avantageuse.
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.
/*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")