Stratégie de croisement des moyennes mobiles doubles et du RSI

Auteur:ChaoZhang est là., Date: 2024-02-01 11:48:51 Je suis désolé
Les étiquettes:

img

Cette stratégie intègre une double moyenne mobile et un indicateur RSI pour construire une stratégie de trading croisée entre positions longues et courtes.

La logique de la stratégie

Cette stratégie adopte deux ensembles de moyennes mobiles, composés de moyennes mobiles rapides (EMA 59 et EMA 82) et moyennes mobiles lentes (EMA 96 et EMA 95).

Plus précisément, lorsque l'EMA rapide dépasse l'EMA lente, un signal long est généré. Si le RSI est inférieur à 30 (zone de survente) à ce moment-là, allez long. Lorsque l'EMA rapide dépasse l'EMA lente, un signal court est produit. Si le RSI dépasse 70 (zone de survente) à ce moment-là, allez court.

L'avantage de l'utilisation de deux moyennes mobiles est de mieux reconnaître les changements dans les tendances à moyen et long terme.

Les avantages

  • Capturez les tendances à moyen et long terme avec des moyennes mobiles doubles
  • Échange de filtres de bruit avec indicateur RSI
  • Combiner les opérations de suivi de tendance et de réversion moyenne
  • Une logique simple et claire

Analyse des risques

  • Dans les marchés largement liés à la fourchette, les signaux de moyenne mobile peuvent être soumis à des coups de fouet
  • L'indicateur RSI échoue également dans certaines conditions de marché
  • Le placement d'un stop loss nécessite de la prudence pour éviter une position trop lâche ou trop serrée

Les domaines d'amélioration

  • Test des combinaisons de moyennes mobiles à cycle plus long
  • Essayez d'ajuster différents paramètres, par exemple les seuils des zones de surachat/survente du RSI
  • Ajouter des filtres supplémentaires tels que le volume des transactions
  • Optimiser les stratégies de stop loss, intégrer un stop loss dynamique avec ATR, etc.

Résumé

Cette stratégie intègre la tendance suivante des moyennes mobiles doubles et le commerce de la réversion moyenne de l'indicateur RSI. Les doubles EMA suivent les directions de tendance à moyen et long terme, tandis que le RSI confirme la validité des signaux de trading et le stop loss. Il s'agit d'une stratégie de croisement simple et pratique entre long et court.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Swing Hull/rsi/EMA Strategy", overlay=true,default_qty_type=strategy.cash,default_qty_value=10000,scale=true,initial_capital=10000,currency=currency.USD)

//A Swing trading strategy that use a combination of indicators, rsi for target, hull for overall direction enad ema for entering the martket.
// hull ma copied from syrowof HullMA who copied from mohamed982 :) thanks both
// Performance 

n=input(title="period",defval=500)

n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))

n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))

n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?green:red
ma=plot(n1,color=c)



// RSi and Moving averages

length = input( 14 )
overSold = input( 70)
overBought = input( 30)
point = 0.0001
dev= 2

fastLength = input(59)
fastLengthL = input(82)
slowLength = input(96)
slowLengthL = input(95)
price = close

mafast = ema(price, fastLength)
mafastL= ema(price, fastLengthL)
maslow = ema(price, slowLength)
maslowL = ema(price, slowLengthL)
vrsi = rsi(price, length)
cShort =  (crossunder(vrsi, overBought))

condDown = n2 >= n1
condUp = condDown != true
closeLong =  (crossover(vrsi, overSold))
closeShort = cShort 


// Strategy Logic
longCondition = n1> n2
shortCondition = longCondition != true

col =condUp ? lime : condDown ? red : yellow
plot(n1,color=col,linewidth=3)


if (not na(vrsi))
    if shortCondition    
        if (price[0] < maslow[0] and price[1] > mafast[1]) //cross entry
            strategy.entry("SYS-SHORT", strategy.short, comment="short")
strategy.close("SYS-SHORT", when=closeShort) //output logic

if (not na(vrsi))
    if longCondition // swing condition          
        if (price[0] < mafast[0] and price[1] > mafast[1]) //cross entry
            strategy.entry("SYS-LONG", strategy.long, comment="long")
strategy.close("SYS-LONG", when=closeLong) //output logic


// Stop Loss 


sl = input(75)
Stop = sl * 10
Q = 100


strategy.exit("Out Long", "SYS-LONG", qty_percent=Q, loss=Stop)
strategy.exit("Out Short", "SYS-SHORT", qty_percent=Q, loss=Stop)



//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Plus de