Quantitative Handelsstrategie, die RSI, MACD und Support/Resistance kombiniert

Schriftsteller:ChaoZhang, Datum: 2024-01-05 16:24:58
Tags:

img

Übersicht

Diese Strategie basiert auf den RSI- und MACD-Indikatoren, kombiniert mit Unterstützungs-/Widerstandsniveaus für das Handelssignalbeurteilen. Sie heißt Panda Sticking Out Tongue Strategie. Die Strategie verwendet den RSI-Indikator zur Bestimmung von Überkauf/Überverkaufsniveaus, den MACD-Indikator zur Bestimmung von Auf-/Abwärtstrends und zeichnet Unterstützungs-/Widerstandsniveaus auf der Grundlage der höchsten und niedrigsten Preise der letzten 100 Perioden, generiert Kaufsignale nahe Unterstützung und Verkaufssignale nahe Widerstand. Sie gehört zu einer gemeinsamen Trendfolgestrategie.

Strategie Logik

Die Strategie basiert hauptsächlich auf zwei Indikatoren - RSI und MACD. Der RSI-Indikator beurteilt Überkauf/Überverkaufsstatus, während der MACD-Indikator Bullish/Bearish-Trendstatus bestimmt. Er berechnet zuerst den 14-Perioden-RSI-Wert und setzt die überkaufte Schwelle auf 70 und die überverkaufte Schwelle auf 30. Dann berechnet er den MACD-Wert basierend auf 12-Tage-Fastline, 26-Tage-Slowline und 9-Tage-Signallinie. RSI unter 30 gilt als überverkauft; RSI über 70 gilt als überkauft.

Darüber hinaus berechnet die Strategie auch die höchsten und niedrigsten Preise in den letzten 100 Perioden als Unterstützungs-/Widerstandsniveaus. Wenn ein Kaufsignal ausgelöst wird, muss der Preis nahe an der Unterstützungsstufe liegen, d.h. innerhalb von 1% des Unterstützungsniveaus, um tatsächlich eine Kauforder auszustellen. Ähnlich muss der Preis, wenn ein Verkaufssignal ausgelöst wird, innerhalb von 1% unter dem Widerstandsniveau liegen, um tatsächlich eine Verkaufsorder auszustellen.

Vorteile der Strategie

Die Strategie kombiniert Trendanalyse und Überkauf-/Überverkaufsniveau-Erkennung, um falsche Signale zu vermeiden, die sich nur auf einen einzelnen Indikator stützen. Durch die Einführung eines Support/Resistance-Filters kann sie falsche Trades aufgrund von Rebounds in der Nähe der wichtigsten S/R-Levels reduzieren. Die Kombination von MACD und RSI kann Preisbewegungen und OB/OS-Status genau identifizieren. Im Vergleich zu einfachen Moving Average-Strategien kann diese Strategie langfristige Preistrends flexibler erfassen.

Risiken der Strategie

Zu den wichtigsten Risiken dieser Strategie gehören:

  1. Bei starken Trends kann es die meisten Gewinne verpassen, da es nach Abschluss der Umkehrung in die Marktwirtschaft eintritt.

  2. Unangemessene Einstellungen der RSI- und MACD-Parameter können zu falschen Signalen führen.

  3. Eine einfache S/R-Erkennungslogik kann tatsächliche S/R-Zonen überschätzen oder unterschätzen.

  4. Mangel an Stop-Loss-Mechanismen, Unfähigkeit, Verluste unter extremen Marktbedingungen effektiv zu kontrollieren.

Um diesen Risiken entgegenzuwirken, können zur Verbesserung der Strategie Methoden wie adaptive MACD, optimierte RSI-Parameter-Tuning, verbesserte S/R-Identifizierung, Marktregime-Modellierung usw. verwendet werden.

Anweisungen zur Verbesserung

Die Strategie kann in folgenden Dimensionen verbessert werden:

  1. Einführung von Stop-Loss-Mechanismen z. B. CANVAS-Stop-Loss

  2. Verwendung des adaptiven MACD für die dynamische Parameteranpassung

  3. Einführung von Preismustererkennung für eine wissenschaftlichere S/R-Identifizierung

  4. Einbeziehung von mehr Daten zur Festlegung einer Marktzustandserkennungslogik für die adaptive Verwendung verschiedener Parameter

  5. Verwenden Sie Machine-Learning-Algorithmen, um die Strategie von Ende zu Ende zu optimieren

Durch diese Verbesserungen können wir den Abbau weiter reduzieren und die Stabilität der Strategie verbessern.

Schlussfolgerung

Die Strategie integriert RSI- und MACD-Indikatoren, um OB/OS-Status zu bestimmen, und handelt um Support/Resistance-Niveaus, was einen Trend-following-Ansatz darstellt. Durch die Einbeziehung von Support/Resistance-Filter wird das Risiko reduziert. Der Vorteil liegt in stabilen Signalen und kontrollierbarem Risiko, das für langfristige Halten geeignet ist.


/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI + MACD with Support and Resistance", shorttitle="RSI_MACD_SR", overlay=true)

// Input for RSI and MACD values
rsiOverbought = input(70, title="RSI Overbought Threshold")
rsiOversold = input(30, title="RSI Oversold Threshold")
macdFastLength = input(12, title="MACD Fast Length")
macdSlowLength = input(26, title="MACD Slow Length")
macdSignalSmoothing = input(9, title="MACD Signal Smoothing")

// Calculating RSI and MACD
rsiValue = ta.rsi(close, 14)
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalSmoothing)

// Support and Resistance
support = ta.lowest(100)
resistance = ta.highest(100)

// Drawing support and resistance lines
// line.new(x1=bar_index[0], y1=support, x2=bar_index[-1], y2=support, color=color.green, width=1)
// line.new(x1=bar_index[0], y1=resistance, x2=bar_index[-1], y2=resistance, color=color.red, width=1)

// Buy Condition: If RSI is oversold and MACD line crosses above the signal line
// Additionally, check if price is near the support line
longCondition = ta.crossover(macdLine, signalLine) and rsiValue < rsiOversold and (close - support) < (close * 0.01)
strategy.entry("Long", strategy.long, when=longCondition, comment="Buy")

// Sell Condition: If RSI is overbought and MACD line crosses below the signal line
// Additionally, check if price is near the resistance line
shortCondition = ta.crossunder(macdLine, signalLine) and rsiValue > rsiOverbought and (resistance - close) < (close * 0.01)
strategy.entry("Short", strategy.short, when=shortCondition, comment="Sell")

// Plot values on the chart for visualization
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")

Mehr