RSI-Indikator kombiniert mit der Handelsstrategie Bollinger Bands


Erstellungsdatum: 2023-12-21 11:17:19 zuletzt geändert: 2023-12-21 11:17:19
Kopie: 0 Klicks: 809
1
konzentrieren Sie sich auf
1623
Anhänger

RSI-Indikator kombiniert mit der Handelsstrategie Bollinger Bands

1. Überblick über die Strategie

Diese Strategie wird als RSI Bollinger Bands TP/SL Strategie bezeichnet. Die Strategie kombiniert den RSI- und Bollinger-Band-Indikator und ermöglicht Trendpositionierung und Breakout-Handel.

2. Strategieprinzipien

1. Der RSI-Indikator beurteilt eine Umkehrung

Der RSI-Indikator kann beurteilen, ob eine Aktie im Überkauf-Überverkauf-Bereich ist. Wenn der RSI größer als die eingestellte Überkauf- und kleiner als die eingestellte Überverkaufsgrenze ist, ist er überkauft. Die Strategie setzt die Überkauflinie auf 50 und die Überverkaufsgrenze auf 50.

2. Die Neigung zu urteilen

Die Brin-Band berechnet die Standarddifferenz des Aktienpreises und ergibt die Auf- und Abwärtsbahn des Aktienpreises. Die obere Bahn ist die Widerstandslinie, die untere Bahn ist die Unterstützungslinie.

3. Die Kombination des RSI mit dem Bollinger Bands

Wenn der RSI-Indikator ein unteres Umkehrsignal zeigt und der Aktienpreis den Bollinger-Band überschreitet, wird angenommen, dass der Kurs von unten nach oben umgekehrt ist, und das ist ein Überschuss. Wenn der RSI-Indikator ein oberes Umkehrsignal zeigt und der Aktienpreis den Bollinger-Band überschreitet, wird angenommen, dass der Kurs von oben nach unten umgekehrt ist, und der Kurs ist leer.

3. Strategische Vorteile

1. Dual-Meter-Filter erhöhen die Signalgenauigkeit

Der RSI-Indikator und der Brin-Band-Indikator werden verwendet, um Trends und Wendepunkte zu ermitteln. In Kombination mit ihnen kann die Genauigkeit der Identifizierung von echten Kauf- und Verkaufssignalen verbessert und falsche Durchbrüche vermieden werden.

2. Risikokontrolle durch Stopp-Loss-Mechanismen

Die Strategie setzt einen Stop-Loss-Punkt ein, um den Einstiegspreis zu erhöhen.*Der Stop-Loss ist der Einstiegspreis.*Das ist der Unterschied zu einem Stop-Loss-Verhältnis, bei dem man die Gewinne sichern kann, um Verluste zu vermeiden und Risiken zu kontrollieren.

3. Anpassbare Kauf- und Verkaufsrichtung

Die Strategie bietet die Möglichkeit, nur zu handeln, nur zu handeln oder in beide Richtungen zu handeln. Der Benutzer kann die verschiedenen Richtungen wählen, je nach Marktsituation, und die Risiken flexibel kontrollieren.

4. Strategische Risiken

1. Brin-Band-Parameter-sensibel

Die Standardgröße des Brinbands beeinflusst die Breite des Brinbands und beeinflusst somit die Erzeugung von Handelssignalen. Wenn die Parameter nicht richtig eingestellt sind, kann dies zu einer großen Anzahl von Fehlsignalen führen.

2. Die Risiken von Stop Loss

Die Stop-Loss-Einstellungen können zu radikal sein, um unnötige Verluste zu verursachen, wenn eine V-Rückkehr eintritt.

3. RSI-Sensitivität

Die Parameter des RSI beeinflussen auch die Form der RSI-Kurve. Wenn die RSI-Parameter falsch eingestellt sind, wird die Genauigkeit des RSI-Umkehrsignals verringert.

Fünftens: Strategische Optimierung

1. Optimierung der RSI-Parameter

Weitere RSI-Längenparameter können getestet werden, um die optimale Parameterkombination zu finden.

2. Optimierung der Brin-Band-Parameter

Es gibt mehrere Arten von Brin-Bandlängen und Standarddifferenz-Parametern, die getestet werden können, um die optimale Kombination zu finden.

3. Verschiedene Stop-Loss-Verhältnisse testen

Die optimale Stop-Loss-Ratio-Parameter können durch Rückmessung gefunden werden.

VI. Fazit

Diese Strategie verwendet die RSI- und Bollinger-Band-Indikatoren, um Trends und Umkehrungen zu erkennen. Die Stop-Loss-Mechanismen enthalten Risikokontrollen, die automatisch Kauf- und Verkaufspunkte identifizieren und Stop-Loss-Stopps rechtzeitig einstellen können. Die Strategie birgt auch gewisse Risiken und kann hauptsächlich durch Parameteroptimierung verbessert werden.

Strategiequellcode
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BigCoinHunter

//@version=5
strategy(title="RSI_Boll-TP/SL", overlay=true, 
     pyramiding=0, default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, initial_capital=1000, 
     currency=currency.USD, commission_value=0.05, 
     commission_type=strategy.commission.percent, 
     process_orders_on_close=true)

//----------- get the user inputs --------------

//---------- RSI -------------
price = input(close, title="Source")

RSIlength = input.int(defval=6,title="RSI Length") 
RSIoverSold = input.int(defval=50, title="RSI OverSold", minval=1)
RSIoverBought = input.int(defval=50, title="RSI OverBought", minval=1)

//------- Bollinger Bands -----------
BBlength = input.int(defval=200, title="Bollinger Period Length", minval=1)
BBmult = input.float(defval=2.0, minval=0.001, maxval=50, step=0.1, title="Bollinger Bands Standard Deviation")
BBbasis = ta.sma(price, BBlength)
BBdev = BBmult * ta.stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = ta.crossover(source, BBlower)
sellEntry = ta.crossunder(source, BBupper)
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
fill(plot1=p1, plot2=p2, title="Bollinger BackGround", color=color.new(color.aqua,90), fillgaps=false, editable=true)

//---------- input TP/SL ---------------
tp = input.float(title="Take Profit:", defval=0.0, minval=0.0, maxval=100.0, step=0.1) * 0.01
sl = input.float(title="Stop Loss:  ", defval=0.0, minval=0.0, maxval=100.0, step=0.1) * 0.01

longEntry = input.bool(defval=true, title= 'Long Entry', inline="11")
shortEntry = input.bool(defval=true, title='Short Entry', inline="11")

//---------- backtest range setup ------------
fromDay   = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear  = input.int(defval = 2021, title = "From Year", minval = 2010)
toDay     = input.int(defval = 30, title = "To Day", minval = 1, maxval = 31)
toMonth   = input.int(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear    = input.int(defval = 2042, title = "To Year", minval = 2010)

//------------ time interval setup -----------
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish    = timestamp(toYear, toMonth, toDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

//------- define the global variables ------
var bool long = true
var bool stoppedOutLong = false
var bool stoppedOutShort = false
//--------- Colors ---------------

TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na
//bgcolor(switch2?(color.new(TrendColor,50)):na)


//--------- calculate the input/output points -----------
longProfitPrice  = strategy.position_avg_price * (1 + tp)     // tp -> take profit percentage
longStopPrice = strategy.position_avg_price * (1 - sl)        // sl -> stop loss percentage

shortProfitPrice  = strategy.position_avg_price * (1 - tp)
shortStopPrice = strategy.position_avg_price * (1 + sl)


//---------- RSI + Bollinger Bands Strategy -------------
vrsi = ta.rsi(price, RSIlength)

rsiCrossOver = ta.crossover(vrsi, RSIoverSold)
rsiCrossUnder = ta.crossunder(vrsi, RSIoverBought)

BBCrossOver = ta.crossover(source, BBlower)
BBCrossUnder = ta.crossunder(source, BBupper)

if (not na(vrsi))

    if rsiCrossOver and BBCrossOver
        long := true
        
    if rsiCrossUnder and BBCrossUnder
        long := false

//------------------- determine buy and sell points ---------------------
buySignall = window() and long  and (not stoppedOutLong)
sellSignall = window() and (not long)  and (not stoppedOutShort)

//---------- execute the strategy -----------------
if(longEntry and shortEntry)
    if long 
        strategy.entry("LONG", strategy.long, when = buySignall, comment = "ENTER LONG")
        stoppedOutLong := true
        stoppedOutShort := false
    else 
        strategy.entry("SHORT", strategy.short, when = sellSignall, comment = "ENTER SHORT")
        stoppedOutLong  := false
        stoppedOutShort := true

else if(longEntry)
    strategy.entry("LONG", strategy.long,  when = buySignall)
    strategy.close("LONG", when = sellSignall)
    if long 
        stoppedOutLong := true
    else
        stoppedOutLong  := false

else if(shortEntry)
    strategy.entry("SHORT", strategy.short, when = sellSignall)
    strategy.close("SHORT", when = buySignall)
    if not long
        stoppedOutShort := true
    else
        stoppedOutShort := false
    

//----------------- take profit and stop loss -----------------
if(tp>0.0 and sl>0.0)
    if ( strategy.position_size > 0 )
        strategy.exit(id="LONG", limit=longProfitPrice, stop=longStopPrice, comment="Long TP/SL Trigger")

    else if ( strategy.position_size < 0 )
        strategy.exit(id="SHORT", limit=shortProfitPrice, stop=shortStopPrice, comment="Short TP/SL Trigger")

else if(tp>0.0)
    if ( strategy.position_size > 0 )
        strategy.exit(id="LONG", limit=longProfitPrice, comment="Long TP Trigger")

    else if ( strategy.position_size < 0 )
        strategy.exit(id="SHORT", limit=shortProfitPrice, comment="Short TP Trigger")
        
else if(sl>0.0)
    if ( strategy.position_size > 0 )
        strategy.exit(id="LONG",  stop=longStopPrice, comment="Long SL Trigger")

    else if ( strategy.position_size < 0 )
        strategy.exit(id="SHORT",  stop=shortStopPrice, comment="Short SL Trigger")