Swing Dual Moving Average und RSI Crossover-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-02-01 11:48:51
Tags:

img

Diese Strategie integriert einen doppelten gleitenden Durchschnitt und einen RSI-Indikator, um eine Crossover-Handelsstrategie zwischen Long- und Short-Positionen zu konstruieren.

Strategie Logik

Diese Strategie verwendet zwei Arten von gleitenden Durchschnitten, bestehend aus einem schnellen gleitenden Durchschnitt (EMA 59 und EMA 82) und einem langsamen gleitenden Durchschnitt (EMA 96 und EMA 95).

Spezifischerweise wird ein langes Signal erzeugt, wenn die schnelle EMA über die langsame EMA bricht. Wenn der RSI zu diesem Zeitpunkt unter 30 (Überverkauftes Gebiet) liegt, gehen Sie lang. Wenn die schnelle EMA unter die langsame EMA bricht, wird ein kurzes Signal erzeugt. Wenn der RSI zu diesem Zeitpunkt 70 (Überkauftes Gebiet) überschreitet, gehen Sie kurz.

Der Vorteil der Verwendung von zwei gleitenden Durchschnitten besteht darin, Veränderungen in mittelfristigen bis langfristigen Trends besser zu erkennen.

Vorteile

  • Erfassen von mittelfristigen bis langfristigen Trends mit doppelten gleitenden Durchschnitten
  • Filterlärmhandel mit RSI-Indikator
  • Kombination von Trend-nachfolgendem und mittlerem Umkehrhandel
  • Einfache und klare Logik

Risikoanalyse

  • In weitgehend reichbegrenzten Märkten können gleitende Durchschnittssignale Whipsaws unterliegen
  • Der RSI-Indikator versagt auch unter bestimmten Marktbedingungen
  • Bei einer Stop-Loss-Platzierung ist Vorsicht geboten, um zu locker oder zu eng zu vermeiden.

Verbesserungsbereiche

  • Prüfung längerer Kombinationen von gleitenden Durchschnittszyklen
  • Versuchen Sie eine andere Parameter-Ausrichtung, z. B. Schwellenwerte von RSI-Überkauf/Überverkaufsgrenzen
  • Zusätzliche Filter wie Handelsvolumen hinzufügen
  • Optimieren Sie Stop-Loss-Strategien, integrieren Sie dynamischen Stop-Loss mit ATR usw.

Zusammenfassung

Diese Strategie integriert den Trend der doppelten gleitenden Durchschnitte und des mittleren Umkehrhandels des RSI-Indikators. Die doppelten EMAs verfolgen mittelfristige bis langfristige Trendrichtungen, während der RSI die Gültigkeit der Handelssignale und den Stop-Loss bestätigt. Dies ist eine einfache und praktische Crossover-Strategie zwischen lang und kurz. Es kann durch Parameter-Tuning und -optimierung an verschiedene Marktumgebungen angepasst werden.


/*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)

Mehr