Strategie für den Durchbruch der Oszillation

Schriftsteller:ChaoZhang, Datum: 2023-10-27 16:32:19
Tags:

img

Übersicht

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.

Strategie Logik

  1. Verwenden Sie den 2-Perioden-RSI, um festzustellen, ob sich der Preis im Überverkaufszone befindet.

  2. Verwenden Sie den langfristigen gleitenden Durchschnitt (200 Perioden), um die Haupttrendrichtung zu bestimmen.

  3. Wenn der Preis über dem langen MA liegt und der RSI unter der Überverkaufslinie liegt, wird eine lange Position zum Marktpreis eröffnet.

  4. 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.

Analyse der Vorteile

  1. Das doppelte MA-System kann mittelfristige Trends effektiv verfolgen.

  2. RSI vermeidet es, den besten Einstiegszeitpunkt während heftiger Schwankungen zu verpassen.

  3. Flexible Konfiguration für die Optimierung von Parametern.

  4. Durchbruchstrategie, keine Wahrscheinlichkeit, Signale zu verpassen.

Risikoanalyse

  1. Die Doppel-MA-Strategie ist parametersensitiv und erfordert eine Optimierung, um eine optimale Leistung zu erzielen.

  2. Es besteht ein Risiko, dass die Verluste zunehmen, wenn kein Stop-Loss besteht.

  3. Ein falscher Ausbruch führt zu Verlusten in einem schwankenden Markt.

  4. Das Risiko einer Überanpassung durch Backtest erfordert eine Validierung auf verschiedenen Märkten und Zeitabschnitten.

Optimierungsrichtlinien

  1. Test und Optimierung von Kombinationen von RSI- und MA-Parametern, um das Optimum zu finden.

  2. Testen Sie zusätzliche Eingangsfilter wie Lautstärken, um falsche Signale zu reduzieren.

  3. Hinzufügen von Trailing Stop Loss, um Einzelhandelsverluste zu kontrollieren.

  4. Die Auswirkungen verschiedener Aufbewahrungszeiten werden ausgewertet, um das optimale Ergebnis zu ermitteln.

  5. Test die Robustheit in längeren Zeitrahmen wie täglich.

Zusammenfassung

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()

Mehr