RSI-Durchschnittsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-07 15:35:58
Tags:

img

Übersicht

Die RSI Moving Average Crossover Strategie ist eine Strategie, die hauptsächlich für den Handel mit Kryptowährungen verwendet wird. Sie wendet einen gleitenden Durchschnitt auf den RSI-Indikator an und handelt basierend auf den Crossovers zwischen dem RSI und seinem gleitenden Durchschnitt.

Strategie Logik

Die Strategie berechnet zunächst den RSI-Indikator. Der RSI-Indikator spiegelt die Preisstärke auf der Grundlage der Auf- und Abwärtsbewegungen über einen bestimmten Zeitraum wider. RSI über 70 gilt als überkauft und unter 30 als überverkauft.

Die Strategie setzt dann einen gleitenden Durchschnitt auf den RSI-Indikator an. Der gleitende Durchschnitt kann zufällige Schwankungen herausfiltern und die Trendrichtung bestimmen. Hier wird ein 10-Perioden-RSI-gleitender Durchschnitt gesetzt.

Wenn der RSI seinen gleitenden Durchschnitt überschreitet, gilt er als Kaufsignal. Wenn der RSI seinen gleitenden Durchschnitt überschreitet, gilt er als Verkaufssignal. Der Handel wird nach diesen beiden Signalen durchgeführt.

In dem Code wird zuerst der RSI-Indikator mit der Länge der Periode berechnet. Dann wird der 10-Perioden gleitende Durchschnitt ma des RSI berechnet. Wenn ma über rsi geht, kauft es. Wenn ma unter rsi geht, verkauft es.

Darüber hinaus zeichnet der Code das Liniendiagramm für rsi und ma sowie das Spaltendiagramm für rsi-ma. Die Trennlinien für rsi=70 und rsi=30 werden ebenfalls gezeichnet. Die entsprechenden Signalpfeile werden beim Kauf oder Verkauf auf dem Diagramm markiert.

Analyse der Vorteile

  • Der RSI kann überkaufte und überverkaufte Bedingungen beurteilen. Der gleitende Durchschnitt kann zufällige Schwankungen filtern. Die Kombination der beiden kann Trendumkehrpunkte identifizieren.

  • Der RSI Moving Average Crossover ist eine relativ ausgereifte Handelsstrategieidee, die einige falsche Signale herausfiltern kann.

  • Der Strategiecode ist einfach und klar, leicht verständlich.

  • Diese Strategie funktioniert gut für Kryptowährungen mit relativ offensichtlichen Trends.

Risikoanalyse

  • Unzulässige RSI- und gleitende Durchschnittsperiodenparameter können zu viele falsche Signale erzeugen.

  • Eine ausschließliche Abhängigkeit von Indikatorenquerschnitten kann nicht vollständig verhindert werden.

  • Die Handelskosten können sich auf die Gewinne auswirken.

  • Der Krypto-Markt ist sehr volatil, man muss auf der Hut sein, um Verlustrisiken zu vermeiden.

Um die Risiken zu beheben, können die Parameter angepasst werden, um die Indikatoren zu optimieren, die Positionsgrößen können reduziert werden, Stop Loss eingestellt werden und eine Trendanalyse kann verwendet werden, um Signale zu filtern.

Optimierungsrichtlinien

  • Untersuchen Sie die optimale Kombination von RSI und gleitendem Durchschnitt unter verschiedenen Periodenparametern.

  • Erhöhen Sie die Positionsgröße, wenn der Trend stark ist, und verringern Sie, wenn der Trend unklar ist.

  • Setzen Sie einen dynamischen Stop-Loss, um den Trend zu verfolgen.

  • Erforschen Sie die Kombination des RSI mit anderen Indikatoren, um neue Handelssignale zu bilden.

  • Erforschen Sie maschinelle Lernmodelle, die auf dieser Strategie basieren, um die Gewinnrate zu verbessern.

Zusammenfassung

Die RSI Moving Average Crossover Strategie kombiniert die Vorteile von Trend- und Filterindikatoren, ist relativ ausgereift und zuverlässig. Die Strategie Logik ist einfach und klar, und die Codeimplementierung ist auch ziemlich vollständig. Insgesamt ist es eine ziemlich gute Kryptowährungshandelsstrategie. Aber jede Strategie muss optimiert werden. Es erfordert ständiges Testen und Anpassen, kombiniert mit Trendanalyse, um eine bessere Strategieleistung zu erzielen.


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI w MA Strategy", shorttitle="RSI w MA Strategy", overlay=false, initial_capital=10000, currency='USD',process_orders_on_close=true)

//TIME FRAME AND BACKGROUND CONTROL/////////////////////////////////////////////
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(2022, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   color.teal : na
//bgcolor(testPeriodBackgroundColor, transp=50)
testPeriod() => true
////////////////////////////////////////////////////////////////////////////////

src = close, len = input(27, 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))
window = input(10, "RSI MA Window")
ma = sma(rsi,window)
plot(rsi, color=color.orange)
colorr= ma > rsi ? color.red : color.green
plot(ma,color=colorr)
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
diff = rsi - ma

plot(diff,style= plot.style_columns,transp=50,color = colorr)

plotshape(crossunder(rsi,ma)?rsi:na,title="top",style=shape.triangledown,location=location.absolute,size=size.tiny,color=color.red,transp=0)
plotshape(crossover(rsi,ma)?rsi:na,title="bottom",style=shape.triangleup,location=location.absolute,size=size.tiny,color=color.lime,transp=0)

buySignal = crossover(rsi,ma)
sellSignal = crossunder(rsi,ma)

//TRADE CONTROL/////////////////////////////////////////////////////////////////
if testPeriod()
    if buySignal
        strategy.close("Short", qty_percent = 100, comment = "Close Short")
        strategy.entry("Long", strategy.long, qty=.1)

    if sellSignal
        strategy.close("Long", qty_percent = 100, comment = "Close Long")
        strategy.entry("Short", strategy.short, qty=.1)

////////////////////////////////////////////////////////////////////////////////













Mehr