RSI- und Bollinger-Band-Fusionshandelsstrategie für LTC

Schriftsteller:ChaoZhang, Datum: 2024-02-06 10:48:03 Uhr
Tags:

img

Übersicht

Diese Strategie kombiniert den Relative Strength Index (RSI) und Bollinger Bands, um eine automatisierte Strategie zu implementieren, mit der Litecoin (LTC) gekauft und verkauft werden kann.

Strategie Logik

Die Strategie stützt sich hauptsächlich auf die folgenden beiden Indikatoren für Handelsentscheidungen:

  1. Relative Strength Index (RSI): Es spiegelt die Größe und Geschwindigkeit der Preisänderungen wider, um festzustellen, ob ein Vermögenswert überkauft oder überverkauft ist.

  2. Bollinger Bands: Es enthält drei Linien - mittlere Linie, obere Band und untere Band. Die mittlere Linie ist der n-tägige gleitende Durchschnitt. Die oberen und unteren Bands sind mittlere Linie ± 2 Standardabweichung der Preise in den letzten n Tagen. Der Preis in der Nähe der oberen Bands deutet auf eine überkaufte Bedingung hin und in der Nähe der unteren Bands auf eine überverkaufte Bedingung.

Nach diesen beiden Indikatoren gelten folgende Handelsregeln:

KaufsignalWenn der RSI von der Tiefzone über 20 steigt, deutet dies auf eine Überverkaufssituation hin, die umgekehrt werden kann.

VerkaufssignalWenn der RSI von der Hochzone unter 80 fällt, deutet dies auf einen Überkauf hin, der sich umkehren kann.

Wie wir sehen können, berücksichtigt die Strategie sowohl den Marktüberkauf/Überverkauf als auch den Preisbruch, um Handelssignale zu generieren.

Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. Kombiniert RSI und Bollinger Bands, um die Marktlage umfassend zu beurteilen, was zu zuverlässigen Signalen führt.

  2. Der RSI zeigt überkaufte/überverkaufte Niveaus an, während Bollinger Bands die Abweichung des Preises von der typischen Verteilung darstellen.

  3. Betrachtet sowohl Indikatorenwerte als auch Preisdurchbruch, um falsche Signale während des Bereichsmarktes zu vermeiden.

  4. angemessene Parameter-Einstellungen von RSI und Bollinger-Band-Perioden und Schwellenwerten auf der Grundlage einer Optimierung zur Verhinderung von Indikatorversagen;

  5. Speziell für LTC optimiert. Leistung ist gut basierend auf historischen Daten-Backtest. Weitere Optimierung kann es noch verbessern.

Risiken

Trotz der Vorteile bestehen einige Risiken:

  1. Sowohl der RSI als auch die Bollinger Bands können scheitern, insbesondere bei abnormalen Marktbedingungen, was zu falschen Signalen und Verlusten führt.

  2. Die Optimierung der Parameter beruht auf historischen Daten. Eine signifikante Änderung des Marktregimes kann diese Parameter ungültig machen und die Strategieleistung verschlechtern.

  3. Obwohl zwei Indikatoren verwendet werden, können während des Bereichsmarktes immer noch Whipsaws auftreten, die Verluste und Opportunitätskosten verursachen.

  4. Die Handelskosten werden in der Strategie ignoriert. Hohe Handelsfrequenz und übergroße Position können die Gewinne schnell durch Kosten erodieren.

Um die oben genannten Risiken zu reduzieren, können Methoden wie Parameter-Tuning, mehr Indikatoren, Positionsgröße, Begrenzung der Handelsfrequenz usw. angewendet werden.

Verbesserungsrichtlinien

Einige Richtungen zur Verbesserung der Strategie:

  1. Verschiedene RSI- und Bollinger-Band-Parameter testen, um bessere Einstellungen zu erhalten.

  2. Einführung von Regeln für die Größe von Positionen auf der Grundlage des Eigenkapitals.

  3. Setzen Sie einen Stop-Loss oder verwenden Sie andere Indikatoren, um einen Stop-Loss zu bestimmen und Gewinnniveaus zu nehmen, um den maximalen Drawdown zu begrenzen.

  4. Überlegen Sie, ob Sie beim Live-Handel die Parameter anpassen und einen Stop-Loss vornehmen können.

  5. Fügen Sie mehr Faktoren wie Volatilitätsindex, Volumen usw. hinzu, um ein Multifaktormodell für höhere Genauigkeit zu bilden.

  6. Entwicklung von Anpassungsmechanismen gemäß verschiedenen LTC-Marktsystemen und -zyklen zur dynamischen Anpassung der Strategieparameter.

Schlussfolgerung

Diese Strategie beurteilt zuerst überkaufte/überverkaufte Niveaus und kombiniert sich dann mit einem Ausbruch, um Handelssignale zu generieren, was sie für LTC geeignet macht.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-05 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("LTCUSD BB + RSI 30MIN,", shorttitle="LTCUSD BBRSI 30MIN ", overlay=true)
     
     // Strategy Tester Start Time
sYear = input(2019, title = "Start Year")
sMonth = input(01, title = "Start Month", minval = 01, maxval = 12)
sDay = input(01, title = "Start Day", minval = 01, maxval = 31)
sHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
sMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = true


///////////// RSI
RSIlength = input(5,title="RSI Period Length") 
RSIoverSold = input(20, minval=1,title="RSIL")
RSIoverBought = input(80, minval=1,title="RSIh")
price = open
vrsi = rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input(60, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50,title="Bb")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = crossover(source, BBlower)
sellEntry = crossunder(source, BBupper)
plot(BBbasis, color=aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=silver,title="Bollinger Bands Lower Line")
fill(p1, p2)


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? green : na
barcolor(switch1?TrendColor:na)
bgcolor(switch2?TrendColor:na,transp=50)


///////////// RSI + Bollinger Bands Strategy
if (not na(vrsi))

    if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower))
        strategy.entry("RSI_BB_L", strategy.long and startTime, stop=BBlower,  comment="RSI_BB_L")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper))
        strategy.entry("RSI_BB_S", strategy.short and startTime, stop=BBupper,  comment="RSI_BB_S")
    else
        strategy.cancel(id="RSI_BB_S")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Mehr