Trendfolgestrategie für RSI- und MA-Crossover


Erstellungsdatum: 2024-02-20 15:31:15 zuletzt geändert: 2024-02-20 15:31:15
Kopie: 1 Klicks: 850
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie für RSI- und MA-Crossover

Überblick

Die Strategie beurteilt die Markttrends und die Eintrittszeit der Entrada durch die Kreuzung des RSI-Indikators mit der MA-Mittellinie aus zwei verschiedenen Perioden. Die Strategie macht nur mehr, wenn der RSI höher als sein eigener 26-Zyklus-Mittelwert ist, und schließt, wenn der RSI niedriger als sein eigener 26-Zyklus-Mittelwert ist, um das Risiko zu kontrollieren.

Strategieprinzip

Die Strategie nutzt zwei MA-Meanlines mit 12 Perioden und 26 Perioden. Wenn die 12-Perioden-Schnelllinie die 26-Perioden-Langstrecke durchbricht, wird der Kurs als Aufwärtstrend angesehen. Wenn die Schnelllinie die Langstrecke unterbricht, wird der Kurs als Abwärtstrend angesehen.

Die Strategie führt auch RSI-Indikatoren ein, um überkaufte und überverkaufte Bereiche zu bestimmen. Nur wenn der RSI über seiner eigenen 26-Zyklus-Mittellinie liegt, wird bei einer Gold-Kreuzung auf der Mittellinie eine Überposition eröffnet; nur wenn der RSI unter seiner eigenen 26-Zyklus-Mittellinie liegt, wird bei einer Todes-Kreuzung auf der Mittellinie eine Leerposition eröffnet. Dies verhindert, dass bei einem Überkauf oder Überverkauf der Marktbedingungen gezwungen wird, Positionen zu eröffnen und somit das Risiko zu kontrollieren.

Analyse der Stärken

Die Strategie kombiniert die Durchschnittslinie mit dem RSI-Indikator, um Trends und Einstiegszeiten zu beurteilen und Trends effektiv zu verfolgen. Die Einführung des RSI-Indikators als Filterbedingung kann die Anzahl der Positionen reduzieren und verhindert, dass sie in einem wackligen Umfeld eingehalten werden. Ohne Stop-Loss kann der Trend vollständig verfolgt werden, um einen höheren Gewinn zu erzielen.

Risikoanalyse

Da kein Stop-Loss eingestellt wurde, können die Verluste durch Fehleinschätzungen vergrößert werden. Es kann auch zu größeren Verlusten kommen, wenn der Markt stark springt. Darüber hinaus können die RSI-Filterbedingungen, wenn sie falsch eingestellt sind, auch eine gute Einstiegsmoment verpassen.

Ein Stop-Loss-Satz kann in Betracht gezogen werden, um den maximalen Verlust zu kontrollieren. Die Parameter des RSI können entsprechend angepasst werden, um bessere Filterbedingungen zu finden. Wenn die Marktbewegungen größer sind, können die Parameter der Durchschnittslinie entsprechend angepasst werden, um den Trend mit einer langsameren Durchschnittslinie zu beurteilen.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Versuchen Sie, eine Kombination von MA-Meanlines aus verschiedenen Perioden zu testen, um nach Meanline-Parametern zu suchen, die am besten mit den Merkmalen der aktuellen Situation übereinstimmen.

  2. Verschiedene Parameter des RSI, unterschiedliche Filterbedingungen und Optimierung der Einstiegszeit.

  3. Hinzufügen anderer Indikatoren oder Filterbedingungen, um die Stabilität des Systems zu verbessern. Zum Beispiel Hinzufügen von Indikatoren für die Messung von Trends, wie z. B. Indikatoren für die Messung von Kapazitäts- und Transaktionsvolumen.

  4. Optimierung von Stop-Loss-Strategien, um Risiken zu kontrollieren, während Trends verfolgt werden. Stop-Strategien wie Tracking Stop, Percentage Stop und Dynamic Stop können getestet werden.

Zusammenfassen

Die Strategie ist im Allgemeinen einfacher und direkter, indem sie die Tendenz durch eine gleichmäßige Kreuzung beurteilt. Der RSI vermeidet die Erpressung von Positionen, um die Tendenz zu verfolgen und so bessere Erträge zu erzielen. Die Strategie kann durch Parameteroptimierung, Hinzufügen anderer Indikatoren usw. weiter verbessert werden, um sie für komplexe, wechselhafte Marktumgebungen geeigneter zu machen.

Strategiequellcode
/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(false,"UseStopLoss")
//rsiLong = true
rsi1 = rsi(close, 14)

window() => true

stopLoss = input(20, title = "Stop loss percentage(0.1%)")
//stopLoss = input(200, title = "Stop loss percentage(0.1%)")

maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

//12 and 26=9%; 3 and8=2%; 26 and 55=2%; when selling on a cross under
//maFastRSI = ema(rsi1, 12)
//maSlowRSI = ema(rsi1, 26)

fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow) // 5% in 2018
//exitLong = crossunder(close, maFast) // 15% in 2018
//exitLong = crossunder(rsi1, maFastRSI) // 13%

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)

//if (rsi1 < ema(rsi1,7))
//rsiLong = false

//if (longEMA and (rsi1 >= highest(rsi1,10)))
//if (longEMA)
if (longEMA and (rsi1 > ema(rsi1,26)))  //RSI ema values optimal from 19 to 35
    strategy.entry("LongId", strategy.long, when=window())

//strategy.close_all(when = rsi1 > 60) // 80=26%, 90=n/a, 70=15%, 60=16% long only
//strategy.close_all(when = (shortEMA and (rsi1 <= ema(rsi1,26)))) //10% gain in 2018 long only
//strategy.close_all(when = (rsi1 <= ema(rsi1,120))) //26=17% 14=2% 42=15%
//strategy.close_all(when = (shortEMA)) // 5% gain in 2018 long only
//strategy.close_all(when = exitLong) 

//if (shortEMA and not(rsiLong))
//if (shortEMA)
if (shortEMA and (rsi1 <= ema(rsi1,26)))
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)