RSI MACD Crossover Doppel-MA-Verfolgungsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-23 17:00:44
Tags:

img

Übersicht

Diese Strategie kombiniert den RSI-Indikator, den MACD-Indikator und doppelte gleitende Durchschnitte, um Trendverfolgungs- und Positionierungseffekte auf dem Volatilitätsmarkt zu erzielen.

Strategie Logik

  1. Berechnung des RSI-Indikators für Überkauf und Überverkauf
  • Berechnung der Preisänderung Aufwärtstrend und Abwärtstrend

  • Berechnung des RSI auf der Grundlage der Preisänderung

  • Bestimmung der überkauften und überverkauften Niveaus

  1. Berechnung des MACD für das Crossover
  • Berechnung der schnellen MA, der langsamen MA und der Signalleitung

  • Eintritt auf dem goldenen Kreuz und Ausgang auf dem Todeskreuz

  • Zeichnen Sie die Crossover-Situationen

  1. Ein doppelter MA-Filter
  • Berechnen Sie schnelle und langsame gleitende Durchschnitte

  • Handel nur in Betracht ziehen, wenn ein schneller MA über einen langsamen MA überschreitet

  • Filtern Sie Lärm und folgen Sie dem Trend

  1. Kombination von Indikatoren für den Einstieg
  • Filter Eingangssignal mit RSI, MACD und doppelter MA

  • Verbesserung der Genauigkeit und Stabilität der Strategie

Analyse der Vorteile

  • Kombination mehrerer Indikatoren verbessert die Genauigkeit

  • Nachfolgender Trend filtert Lärm und verbessert die Stabilität

  • Der RSI erkennt potenzielle Umkehrpunkte

  • MACD-Crossover liefert einfache Ein- und Ausstiegssignale

  • Doppel-MA beseitigt die meisten Gegentrendgeschäfte

  • Einfach zu verstehen mit wenigen Parametern, gut zum Lernen

Risikoanalyse

  • Risiko einer Überanpassung mehrerer Indikatoren

  • Doppel-MA bringt Flexibilität zum Opfer und kann Chancen verpassen

  • RSI- und MACD-Parameter müssen sorgfältig ausgewählt werden

  • Achten Sie auf den Stop-Loss auf Basis des Symbols

  • Erfordert regelmäßige Neuausrichtung der Parameter

Optimierungsrichtlinien

  • Anpassung der RSI-Parameter für verschiedene Symbole

  • Optimierung der doppelten MA-Perioden für eine bessere Nachverfolgung

  • Hinzufügen von Stop Loss zur Kontrolle von Einzelhandelsverlusten

  • Mehr Indikatoren hinzufügen, um die Kombination zu bereichern

  • Entwicklung eines anpassungsfähigen Parametermodells für die automatische Abstimmung

Zusammenfassung

Diese Strategie kombiniert RSI, MACD und doppelte MA, um Trends zu identifizieren und zu verfolgen und Filtersignale durch mehrere Ebenen zu filtern. Sie eignet sich sehr gut für Anfänger, um zu lernen und zu verbessern. Der Vorteil liegt in ihrer Einfachheit und Anpassungsfähigkeit. Die feine Abstimmung von Parametern kann anständige stetige Renditen erzielen.


/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// strategy(title="RSI MACD", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.25, initial_capital = 1000)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

//standard rsi template
src = ohlc4, len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, color=#87ff1a)
band1 = hline(80)
band = hline(50)
band0 = hline(20)
fill(band1, band0, color=purple, transp=90)

//macd

fast_length = input(title="Fast Length",  defval=9)
slow_length = input(title="Slow Length",  defval=72)
signal_length = input(title="Signal Length",  defval=9)

fast_ma = sma(rsi, fast_length) 
slow_ma = sma(rsi, slow_length) 
shortma = sma(ohlc4, fast_length)
longma = sma(ohlc4, slow_length)
controlmainput = input(title = "Control MA", defval = 234)
controlma = sma(ohlc4, controlmainput)
macdx = fast_ma - slow_ma
signalx = sma(macdx, signal_length)
hist = macdx - signalx
ma_hist = shortma - controlma
macd = macdx + 50
signal = signalx + 50

plot(macd,"macd", color = fuchsia)
plot(hist,"hist", style = histogram, color = fuchsia)
//plot(ma_hist,"ma hist", style = histogram, color = orange)
plot(signal,"signal", color = white)

//input
control_buy_toggle = input(true, "Buy on crossover control MA?", type = bool)
buy_on_control = control_buy_toggle == true? true : false

//conditions
buy = buy_on_control == true? ma_hist > 0 and shortma > longma and crossover(macd,signal) or crossover(shortma, controlma) : ma_hist > 0 and shortma > longma and crossover(macd,signal)
sell = ma_hist > 0 and shortma > longma and crossunder(macd,signal)
stop = crossunder(shortma, longma) or crossunder(shortma, controlma)

plotshape(buy,"buy", shape.triangleup, location.bottom, green, size = size.tiny)
plotshape(sell,"sell", shape.triangledown, location.bottom, red, size = size.tiny)
plotshape(stop,"stop",shape.circle,location.bottom, white, size = size.tiny)

if testPeriod()
    strategy.entry("buy", true, when = buy, limit = close)
    strategy.close("buy", when = sell)
    strategy.close("buy", when = stop)
    



Mehr