Verbesserte RSI-MACD-Drehdurchschnittstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-05 16:11:23
Tags:

img

Übersicht

Dies ist eine Kombinationsstrategie, bei der RSI, MACD und gleitende Durchschnitte verwendet werden.

Strategie Logik

Die Strategie beurteilt hauptsächlich die folgenden vier Voraussetzungen für die Entscheidung über die langfristige Einreise:

  1. Das MACD-Histogramm ist größer als das eingestellte lange Einstiegsniveau;
  2. Der RSI liegt über 50, was auf einen überkauften Zustand hinweist.
  3. Die kurzfristige EMA überschreitet die langfristige EMA und bildet ein goldenes Kreuz.
  4. Der Schlusskurs durchbricht die langfristige EMA und liegt über der langfristigen EMA plus dem ATR-Stop-Loss-Bereich.

Wenn die folgenden beiden Ausstiegsbedingungen erfüllt sind, wird die Strategie Positionen zum Stop-Loss schließen:

  1. Das MACD-Histogramm liegt unter dem eingestellten Stop-Loss-Level;
  2. Die kurzfristige EMA überschreitet die langfristige EMA und bildet ein totes Kreuz.

Die Strategie stoppt somit den Verlust rechtzeitig und vermeidet bei Gewinngewinnung oder Rückgriff große Verluste.

Analyse der Vorteile

Der größte Vorteil dieser Strategie liegt in der Kombination von Indikatoren, die die Vorteile jedes Indikators voll ausschöpfen:

  1. Die Anwendung des RSI vermeidet den Transaktionsgebührenschäden, die durch die wiederholte Eröffnung von Positionen in Bereichsgrenzmärkten verursacht werden.

  2. Die Empfindlichkeit des MACD-Histogrammindikators sorgt für eine zeitnahe Erfassung der Wendepunkte.

  3. Die gleitenden Durchschnitte filtern kurzfristige Marktgeräusche aus und geben dem Indikator-Effekt vollen Einfluss.

Risiken und Lösungen

Zu den wichtigsten Risiken dieser Strategie gehören:

  1. Das größte Risiko eines gleitenden Durchschnitts wie einer Trendstrategie ist ein großer Pullback, der durch eine Trendumkehr verursacht wird. Dies kann durch Positionsgrößen, Stop Loss usw. aktiv kontrolliert werden.

  2. Schwierigkeiten bei der Parameteroptimierung. Multi-Indikator-kombinierte Strategien haben höhere Schwierigkeiten bei Parameter-Einstellung und Optimierung. Methoden wie Walk Forward, genetischer Algorithmus können für optimierte Parameter angewendet werden.

Ausbildungsrichtlinien

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Zusätzliche Filter erhöhen, um weitere falsche Signale zu vermeiden, z. B. mit Volumen-, Volatilitätsindikatoren usw. kombinieren.

  2. Versuchsparameterunterschiede für mehr Produkte Anpassung von Parametern für mehr Sorten

  3. Optimieren Sie die Einstellungen für gleitende Durchschnittsparameter. Testen Sie die Unterschiede zwischen verschiedenen Längenparametern.

  4. Untersuchen Sie adaptive gleitende Durchschnitte, wechseln Sie verschiedene Parameter auf Basis von Marktregimes.

Schlussfolgerung

Zusammenfassend ist diese Strategie eine typisch optimierte Version der gleitenden Durchschnitts- und Trendfolgestrategie. Sie absorbiert die Stärken von Mainstream-Indikatoren wie MACD und RSI in Aspekten des Timing-Eintritts und Stop Loss. Die nächsten Schritte könnten aus Perspektiven wie Parameteroptimierung und Risikokontrolle verbessert werden, um die Strategie robuster und anpassungsfähiger für mehr Produkte zu machen, was zu einer höheren Stabilität führt.


/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved RSI MACD Strategy with Moving Averages", overlay=true)

// Inputs
src = input(close, title="RSI Source")

// RSI Settings
lengthRSI = input.int(14, minval=1)

// Stop Loss Settings
stopLossPct = input.float(0.09, title="Stop Loss Percentage")
takeProfitPct = input.float(0.15, title="Take Profit Percentage")

// MACD Settings
fastlen = input(12)
slowlen = input(26)
siglen = input(9)

// Strategy Settings
longEntry = input(0, title="Long Entry Level")
exitLevel = input(0, title="Exit Level")

// EMA Settings
emaShortLength = input(8, title="Short EMA Length")
emaLongLength = input(21, title="Long EMA Length")

atrMultiplier = input.float(2, title="atrMultiplier")
atrLength = input.int(20, title="atrLength")

// Indicators
rsi1 = ta.rsi(src, lengthRSI)
[macd, signal, hist] = ta.macd(src, fastlen, slowlen, siglen)

// Calculate EMAs
emaShort = ta.ema(src, emaShortLength)
emaLong = ta.ema(src, emaLongLength)

// Calculate ATR
atr = ta.atr(atrLength)

// Variables
var bool canEnterLong = na

// Strategy conditions
longCondition = hist > longEntry and rsi1 > 50 and emaShort > emaLong and close > emaLong + atrMultiplier * atr

// Entries and Exits
if hist < exitLevel and emaShort < emaLong
    canEnterLong := true
    strategy.close("Long")
    
// Store last entry price
var lastEntryPrice = float(na)
var lastEntryPrice2 = float(na)
if longCondition
    strategy.entry("Long", strategy.long)
    canEnterLong := false
    lastEntryPrice := close
if lastEntryPrice < close
    lastEntryPrice := close
// Calculate Stop Loss and Take Profit Levels based on last entry price
stopLossLevel = lastEntryPrice * (1 - stopLossPct)

// Check for stop loss and take profit levels and close position if triggered
if (strategy.position_size > 0)
    last_buy = strategy.opentrades[0]
    if (close < stopLossLevel)
        strategy.close("Long", comment="Stop Loss Triggered")
    if (close * (1 - takeProfitPct) > strategy.opentrades.entry_price(strategy.opentrades - 1) )
        strategy.close("Long", comment="Take Profit Triggered")

Mehr