Diese Strategie basiert auf der klassischen Idee von Larry Connors, das doppelte gleitende Durchschnittssystem verwendet, um die mittelfristigen Schwankungen des Marktes zu erfassen und Gewinn zu erzielen, wenn er überkauft oder überverkauft ist.
Verwenden Sie den 2-Perioden-RSI, um festzustellen, ob sich der Preis im Überverkaufszone befindet.
Verwenden Sie den langfristigen gleitenden Durchschnitt (200 Perioden), um die Haupttrendrichtung zu bestimmen.
Wenn der Preis über dem langen MA liegt und der RSI unter der Überverkaufslinie liegt, wird eine lange Position zum Marktpreis eröffnet.
Wenn der Kurs den kurzfristigen MA (5 Perioden) nach oben durchbricht, schließt man die Longposition zum Marktpreis, um Gewinn zu erzielen.
Darüber hinaus bietet die Strategie folgende konfigurierbare Optionen:
RSI-Parameter: Dauer der Periode, Überkauf-/Überverkaufswerte.
MA-Parameter: lange und kurze Periode.
RSI-MA-Filter: RSI-MA hinzufügen, um RSI-Schwankungen zu vermeiden.
Stoppverlust: kann konfiguriert werden, um Stoppverlust hinzuzufügen oder nicht.
Das doppelte MA-System kann mittelfristige Trends effektiv verfolgen.
RSI vermeidet es, den besten Einstiegszeitpunkt während heftiger Schwankungen zu verpassen.
Flexible Konfiguration für die Optimierung von Parametern.
Durchbruchstrategie, keine Wahrscheinlichkeit, Signale zu verpassen.
Die Doppel-MA-Strategie ist parametersensitiv und erfordert eine Optimierung, um eine optimale Leistung zu erzielen.
Es besteht ein Risiko, dass die Verluste zunehmen, wenn kein Stop-Loss besteht.
Ein falscher Ausbruch führt zu Verlusten in einem schwankenden Markt.
Das Risiko einer Überanpassung durch Backtest erfordert eine Validierung auf verschiedenen Märkten und Zeitabschnitten.
Test und Optimierung von Kombinationen von RSI- und MA-Parametern, um das Optimum zu finden.
Testen Sie zusätzliche Eingangsfilter wie Lautstärken, um falsche Signale zu reduzieren.
Hinzufügen von Trailing Stop Loss, um Einzelhandelsverluste zu kontrollieren.
Die Auswirkungen verschiedener Aufbewahrungszeiten werden ausgewertet, um das optimale Ergebnis zu ermitteln.
Test die Robustheit in längeren Zeitrahmen wie täglich.
Diese Strategie kombiniert doppelte MA-Trendverfolgung und RSI-Überkauf/Überverkauf, um ein typisches Breakout-System zu bilden. Mit Parameteroptimierung, striktem Risikomanagement und Robustheitsvalidierung kann sie zu einem leistungsstarken quantitativen Handelswerkzeug werden.
/*backtest start: 2023-09-26 00:00:00 end: 2023-10-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("RSI Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) //Starter Parameters length = input(title="RSI Lenght", defval=2) overBoughtRSI = input(title="OverBought Level for RSI", defval=10) shortLength = input(title="Short MA Length", defval=5) longLength = input(title="Long MA Length", defval=200) RuleMRSI=input(title="RSI Moving Average Filter", defval= true) lengthmrsi=input(title="RSI Moving Average Length", defval=4) overBoughtMRSI=input(title="OverBought Level for the Moving Average of the RSI", defval=30) Rulestop=input(title="Apply Stop Loss", defval=false) stop_percentual=input(title="% Stop Loss", defval=10) //RSI vrsi = rsi(close, length) //Moving Averages longma = sma(close,longLength) shortma = sma(close,shortLength) mrsi=sma(vrsi,lengthmrsi) //Stop Loss stop_level = strategy.position_avg_price*((100-stop_percentual)/100) //Backtest Period testStartYear = input(2009, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true //Strategy if testPeriod() and (not na(vrsi)) if (RuleMRSI==false) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==false) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all()