Scalping EMA ADX RSI avec achat/vente

Auteur:ChaoZhang est là., Date: le 26 mai 2022 à 17h01
Les étiquettes:ADXRMAIndice de résistanceLe taux d'intérêtSMALa WMA

Il s'agit d'un indicateur d'étude qui montre les entrées dans la stratégie vues dans l'une des chaînes youtube donc cela ne m'appartient pas. Je ne peux pas dire qui c'est parce que c'est contre les règles de la maison pour faire de la publicité mais vous pouvez le savoir si vous le cherchez sur youtube. Les valeurs par défaut des oscillateurs et de l'EMA ajustées comme suggéré. Il dit qu'il a obtenu les meilleurs résultats en 5 minutes de temps mais j'ai essayé de rendre les choses aussi modifiables que possible afin que vous puissiez jouer avec les paramètres et créer votre propre stratégie pour différents délais si vous le souhaitez. Suggéré d'utiliser avec des graphiques de bougies normaux. La ligne bleue ci-dessous indique que l'ADX est au-dessus du seuil sélectionné défini dans les paramètres nommés Trend Ready Limit. Vous pouvez définir des alertes pour les signaux d'achat, de vente ou d'achat/vente ensemble.

La stratégie d'entrée elle-même est assez simple. Les règles d'entrée sont les suivantes, le script vérifiera tout cela sur auto et vous donnera un signal d'achat ou de vente: Temps recommandé: 5 min

Pour une entrée longue:

  • Vérifiez si le prix est supérieur à l'EMA fixé (vous pouvez désactiver cette règle si vous le souhaitez dans les paramètres)
  • Le RSI est en survente.
  • ADX est supérieur au seuil de Trend Ready (ce qui signifie qu'il y a une tendance)
  • Le prix doit approuver la tendance des bougies précédentes.
  • Entrez avec un stop-loss inférieur au dernier bas de swing avec un ratio de prise de profit de 1:1 ou de 1,5:1.

Pour les entrées courtes:

  • Vérifiez si le prix est en dessous de l'EMA (vous pouvez désactiver cette règle si vous le souhaitez dans les paramètres)
  • Le RSI est en surachat.
  • ADX est supérieur au seuil de Trend Ready (ce qui signifie qu'il y a une tendance)
  • Le prix doit approuver la tendance des bougies précédentes.
  • Entrez avec un stop-loss au-dessus du dernier swing high avec un ratio de prise de profit de 1:1 ou de 1,5:1.

C'est mon premier indicateur. Faites-moi savoir si vous voulez des mises à jour. Je ne sais pas si je peux tout ajouter, mais j'essayerai quand même.

Modifié: Les signaux vérifieront jusqu'à 2 bougies avant si le RSI est inférieur ou supérieur à la valeur définie pour afficher le signal.

test de retour

img


/*backtest
start: 2022-04-25 00:00:00
end: 2022-05-24 23:59:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
indicator(title='EMA RSI ADX Scalping Alerts', shorttitle="ERA Scalper", overlay=true)

//Define MA Inputs and group them
maType = input.string(title="MA Type", options=["EMA", "SMA", "WMA", "VWMA", "HMA", "RMA", "DEMA", "TEMA", "LSMA", "ZLSMA"], defval="EMA", group='MA Settings')
emaSource = input.source(title='MA Source', defval=close, group='MA Settings')
emaLength = input.int(title='MA Length', defval=50, minval=1, maxval=999, group='MA Settings')

//Other Moving Avarage Calculations
e1 = ta.ema(emaSource, emaLength)
e2 = ta.ema(e1, emaLength)
dema = 2 * e1 - e2

ema1 = ta.ema(emaSource, emaLength)
ema2 = ta.ema(ema1, emaLength)
ema3 = ta.ema(ema2, emaLength)
tema = 3 * (ema1 - ema2) + ema3

lsmaOffset = input.int(title="LSMA Offset", defval=0, minval=0, maxval=100, tooltip='Only used if you choose the LSMA and ZLSMA(Zero Lag LSMA) Option between MA Types', group='MA Settings')
lsma = ta.linreg(emaSource, emaLength, lsmaOffset)
lsma2 = ta.linreg(lsma, emaLength, lsmaOffset)
eq = lsma-lsma2
zlsma = lsma+eq

// Switch between different MA Types
emaValue = switch maType
    "EMA" => ta.ema(emaSource, emaLength)
    "SMA" => ta.sma(emaSource, emaLength)
    "WMA" => ta.wma(emaSource, emaLength)
    "VWMA" => ta.vwma(emaSource, emaLength)
    "HMA" => ta.hma(emaSource, emaLength)
    "RMA" => ta.rma(emaSource, emaLength) 
    "DEMA" => dema
    "TEMA" => tema 
    "LSMA" => lsma
    "ZLSMA" => zlsma
    =>
        runtime.error("No matching MA type found.")
        float(na)
    
//Define RSI inputs and group them
rsiSource = input.source(title='RSI Source', defval=close, group='RSI Settings')
rsiLength = input.int(title='RSI Length', defval=3, minval=0, maxval=100, group='RSI Settings')
rsiValuee = ta.rsi(rsiSource, rsiLength)
rsiOverbought = input.int(title='RSI Overbought Level', defval=80, group='RSI Settings')
rsiOversold = input.int(title='RSI Oversold Level', defval=20, group='RSI Settings')

//Define overbought and oversold conditions
isRsiOB = rsiValuee >= rsiOverbought
isRsiOS = rsiValuee <= rsiOversold

//ADX Inputs and calculation of the value
adxlen = input.int(5, title='ADX Smoothing', group='ADX Settings')
dilen = input.int(5, title='DI Length', group='ADX Settings')
dirmov(len) =>
    up = ta.change(high)
    down = -ta.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 = ta.rma(ta.tr, len)
    plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
    minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
    [plus, minus]
adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    adx
sig = adx(dilen, adxlen)

//Define the input and value where it is considered that there is a trend going on
adxLimit = input.int(title='Trend Ready Limit', defval=30, minval=0, maxval=100, group='ADX Settings')
trendReady = sig > adxLimit

//Draw trend ready at the bottom of the chart for better viewing so that you can change the value based on what you see easier
plotADX = input(title='Draw Trend Ready On Chart', defval=false)
readyFold = plotADX and sig > adxLimit
plotchar(series=readyFold, title='Trend Ready', location=location.bottom, color=color.new(color.blue, 0), size=size.small, char='_')

//Plot the EMA on chart
enableEmaRule = input(title='Enable MA Rule', defval=true)

//Define the signal conditions and choice to add or leave out MA Rule if you wish so
alertLong = enableEmaRule ? low > emaValue and (rsiValuee <= rsiOversold or rsiValuee[1] <= rsiOversold or rsiValuee[2] <= rsiOversold) and sig > adxLimit and close > high[1] : (rsiValuee <= rsiOversold or rsiValuee[1] <= rsiOversold or rsiValuee[2] <= rsiOversold) and sig > adxLimit and close > high[1]
alertShort = enableEmaRule ? high < emaValue and (rsiValuee >= rsiOverbought or rsiValuee[1] >= rsiOverbought or rsiValuee[2] >= rsiOverbought) and sig > adxLimit and close < low[1] : (rsiValuee >= rsiOverbought or rsiValuee[1] >= rsiOverbought or rsiValuee[2] >= rsiOverbought) and sig > adxLimit and close < low[1]
plot(enableEmaRule ? emaValue : na, color=color.new(color.red, 0), title='MA')

//Buy and Sell Shapes on Chart
plotshape(alertLong, title='Buy', location=location.belowbar, color=color.new(color.green, 0), size=size.small, style=shape.triangleup, text='Buy')
plotshape(alertShort, title='Sell', location=location.abovebar, color=color.new(color.red, 0), size=size.small, style=shape.triangledown, text='Sell')

//Alerts
alertcondition(title='Buy Alert', condition=alertLong, message='Long Conditions are Met')
alertcondition(title='Sell Alert', condition=alertShort, message='Short Conditions are Met')
alertcondition(title='Buy / Sell Alert', condition=alertLong or alertShort, message='Conditions Met for Buy or Short')

if alertLong
    strategy.entry("Enter Long", strategy.long)
else if alertShort
    strategy.entry("Enter Short", strategy.short)

Relationnée

Plus de