MACD der RSI-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 21.09.2023
Tags:

Übersicht

Diese Strategie verwendet den MACD-Indikator, um den Trend des RSI-Indikators zu bestimmen und Handelssignale zu generieren.

Strategie Logik

Die Strategie basiert auf zwei Hauptindikatoren:

  1. RSI Berechnet den regelmäßigen 14-Perioden-RSI.

  2. MACD des RSI Berechnet MACD-Werte für den RSI, mit Standard-schnellen MA 12, langsamen MA 26, Signallinie 9.

Wenn der MACD des RSI nach oben kreuzt, das schnelle und langsame MAs goldene Kreuz, bestimmt es einen Aufwärtstrend und geht lang.

Wenn sich der MACD nach unten kreuzt, die schnellen und langsamen MA-Toten kreuzen, bestimmt er einen Abwärtstrend und geht kurz.

Die exponentiellen gleitenden Durchschnitte des MACD helfen, den längerfristigen Trend des RSI selbst zu bestimmen, was zu genaueren Signalen führt.

Vorteile

  • MACD beurteilt RSI-Trendrichtung für höhere Genauigkeit
  • RSI als primärer Indikator, MACD als sekundärer
  • Exponentielle MAs machen die Trendbestimmung stabil
  • Die Kombination überprüft sich gegenseitig und vermeidet Probleme.
  • Parameter-Tuning bietet Flexibilität für verschiedene Märkte

Risiken

  • Sowohl der RSI als auch der MACD können zurückbleiben, was zu ungenauen Signalen führt
  • Falsche MACD-Parameter können mehr falsche Signale erzeugen
  • Reine Indikatoren, empfindlich gegenüber plötzlichen Ereignissen
  • Der Stop-Loss-Mechanismus muss weiter verbessert werden
  • Parameteroptimierung für verschiedene Produkte

Die Risiken können verringert werden, indem

  • Optimierung der Kombination von RSI- und MACD-Parametern
  • Hinzufügen anderer Filter zur Bestätigung
  • Entspannung des TP/SL zur Vermeidung eines vorzeitigen Ausstiegs
  • Überlegungen zur Wiedereinreise
  • Positionsdimensionierung zur Begrenzung einzelner Verluste

Anweisungen zur Verbesserung

Die Strategie kann verbessert werden durch:

  1. Prüfung von Kombinationen von RSI- und MACD-Parametern

  2. Hinzufügen einer sekundären Bestätigung, wenn MACD Signale

    Z.B. Kerzenmuster, Volumen, Bollinger-Bänder usw.

  3. Optimierung von Stopps zu Trailing Stops

  4. Hinzufügen von Wiedereinreisebestimmungen

    Wiederherstellung von Positionen nach Erreichen von Stops, falls der Trend anhält

  5. Anpassung der Positionsgrößen an die Volatilität

    Bei hoher Volatilität kleiner, bei geringer Volatilität größer

Zusammenfassung

Diese Strategie kombiniert RSI und MACD-Indikatoren, um sich gegenseitig zu überprüfen, um eine genauere und stabilere Trenddetektion zu erzielen. Aber die Parameter müssen optimiert werden, und zusätzliche technische Filter oder Handelsregeln sind für die Bestätigung erforderlich, um plötzliche Ereignisse zu vermeiden. Auch Stop-Loss-Mechanismen und dynamische Positionsgrößen sind wichtig.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy(title = "MACD of RSI", overlay = false)

//////////////////////// RSI ///////////////////////////

src = close, len = input(14, minval=1, title="Length")
up = sma(max(change(src), 0), len)
down = sma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))


//////////////////////// RSI   //////////////////////////

//////////////// MACD  ////////////////////////////

sourcemacd = rsi 

fastLength = input(12, minval=1), slowLength=input(26,minval=1)
signalLength=input(9,minval=1)


fastMA = ema(sourcemacd, fastLength)
slowMA = ema(sourcemacd, slowLength)

macd = fastMA - slowMA
signal = ema(macd, signalLength)
delta=macd-signal

swap1 = delta>0?green:red

plot(delta,color=swap1,style=columns,title='Histo',histbase=0,transp=20)
p1 = plot(macd,color=blue,title='MACD Line')
p2 = plot(signal,color=red,title='Signal')
fill(p1, p2, color=blue)
hline(0)




/////////////////////////MACD  //////////////////////////


// Conditions



longCond = na
sellCond = na
longCond :=  crossover(delta,0)
sellCond :=  crossunder(delta,0)




monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  longCond  ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( sellCond   ) 

    strategy.close("BUY")







Mehr