Quantitative Handelsstrategie basierend auf Bollinger Bands und RSI


Erstellungsdatum: 2023-12-20 15:39:19 zuletzt geändert: 2023-12-20 15:39:19
Kopie: 0 Klicks: 679
1
konzentrieren Sie sich auf
1621
Anhänger

Quantitative Handelsstrategie basierend auf Bollinger Bands und RSI

Überblick

Diese Strategie basiert auf Brin-Bändern und einem relativ starken RSI und entwickelt eine quantitative Handelsstrategie. Die Strategie kombiniert Trendverfolgung und Überkauf-Überverkauf-Urteil, um in den Markt zu gelangen, wenn der Trend beginnt, und bei Überkauf-Überverkauf zu gehen, um einen Gewinn zu erzielen.

Strategieprinzip

Die Strategie nutzt Brinks, um die Preisentwicklung und die Unterstützung des Widerstands zu bestimmen. Wenn der Preis in der Nähe der Brinksbandung ist, wird er als Überverkauf angesehen. Wenn der Preis in der Nähe der Brinksbandung ist, wird er als Überkauf angesehen.

Die spezifischen Handelsregeln sind: Eintritt mit einem Plus, wenn der Preis unter der Bollinger Band-Absenkung liegt und der RSI unter 30 liegt. Eintritt mit einem Leerwert, wenn der Preis über der Bollinger Band-Absenkung liegt und der RSI über 70 liegt.

Strategische Vorteile

Die Strategie kombiniert Brin-Band-Trend-Tracking und RSI-Überkauf-Überverkauf-Urteil, um den Startpunkt des Trends besser zu erfassen. Die Stop-and-Loss-Strategie ist außerdem klarer und fördert das Risikomanagement.

Die Strategie nutzt mehrere Indikatoren und Parameter, um die Genauigkeit der Entscheidungen zu verbessern, im Vergleich zu Indikatoren wie Bollinger Bands oder RSI. Die Handelsperformance ist stabiler, wenn die Parameter entsprechend angepasst werden.

Strategisches Risiko

Die Strategie beruht hauptsächlich auf Parameteroptimierungen, die mit einem hohen Risiko verbunden sind, wenn sie nicht korrekt eingestellt sind. Es kann beispielsweise zu Trendverlusten oder Falschsignalen kommen, wenn die Parameter nicht mit den Bollinger Bands übereinstimmen. Außerdem müssen die Stop-Loss-Punkte sorgfältig bewertet werden.

Die Strategie hat auch eine gewisse Abhängigkeit von den Handelsarten. Für die stark schwankenden Arten ist eine Anpassung der Brin-Band-Parameter erforderlich. Für die Arten, bei denen keine Trends sichtbar sind, wird die Wirkung reduziert.

Es wird empfohlen, Parameter-Optimierungs-Tests durchzuführen, die Stop-Loss-Ebene zu bewerten und die Performance unter verschiedenen Sorten und Marktumgebungen zu testen.

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Beurteilung und Optimierung der Parameter von Brin-Band und RSI, um sie besser an die Merkmale der gehandelten Sorten anzupassen

  2. Hinzufügen von anderen Indikatoren, wie KDJ, MACD, etc., um ein Multifaktormodell zu bilden

  3. Beurteilung der Stop-Loss-Strategie, Einrichtung von Floating-Stops oder Batch-Stops

  4. Dynamische Optimierung der Parameter je nach Sorte und Marktumfeld

  5. Erhöhung der Fähigkeit von Machine Learning-Modellen, Signalqualität und Risikoniveaus zu beurteilen

Zusammenfassen

Die Strategie integriert die Brin-Band- und RSI-Indikatoren und entwirft ein umfassenderes Trendverfolgungssystem. Die Effektivität und Stabilität kann durch Parameteroptimierung und Risikomanagement noch weiter verbessert werden. Anpassungen und Optimierungen werden empfohlen, um eine bessere Leistung zu erzielen, je nach eigenen Bedürfnissen und Risikopräferenzen.

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

//@version=4
strategy("BB + RSI Estrategia", overlay=true)

longitud = input(20, title="Longitud BB", minval=5, maxval=50, step=1)
multiplicador = input(2.0, title="Multiplicador BB", type=input.float, step=0.1)
timeframe_bb = input("D", title="Marco de Tiempo BB", type=input.resolution)
rsi_length = input(14, title="Longitud RSI", minval=5, maxval=50, step=1)
rsi_overbought = input(70, title="Nivel de sobrecompra RSI", minval=50, maxval=80, step=1)
rsi_oversold = input(30, title="Nivel de sobreventa RSI", minval=20, maxval=50, step=1)
take_profit = input("Central", title="Take Profit (banda)", options=["Central", "Opuesta"])
stop_loss = input(2.00, title="Stop Loss", type=input.float, step=0.10)

var SL = 0.0

[banda_central, banda_superior, banda_inferior] = security(syminfo.tickerid, timeframe_bb, bb(close, longitud, multiplicador))
rsi_value = rsi(close, rsi_length)

comprado = strategy.position_size > 0
vendido = strategy.position_size < 0

if not comprado and not vendido
    if close < banda_inferior and rsi_value < rsi_oversold
        // Realizar la compra
        cantidad = round(strategy.equity / close)
        strategy.entry("Compra", strategy.long, qty=cantidad, when=cantidad > 0)
        SL := close * (1 - (stop_loss / 100))

    if close > banda_superior and rsi_value > rsi_overbought
        // Realizar la Venta
        cantidad = round(strategy.equity / close)
        strategy.entry("Venta", strategy.short, qty=cantidad, when=cantidad > 0)
        SL := close * (1 + (stop_loss / 100))

if comprado
    // Verificar el take profit
    if take_profit == "Central" and close >= banda_central
        strategy.close("Compra", comment="TP")
        SL := 0

    if take_profit == "Opuesta" and close >= banda_superior
        strategy.close("Compra", comment="TP")
        SL := 0
    // Verificar el stop loss
    if close <= SL
        strategy.close("Compra", comment="SL")
        SL := 0

if vendido
    // Verificar el take profit
    if take_profit == "Central" and close <= banda_central
        strategy.close("Venta", comment="TP")
        SL := 0

    if take_profit == "Opuesta" and close <= banda_inferior
        strategy.close("Venta", comment="TP")
        SL := 0
    // Verificar el Stop loss
    if close >= SL
        strategy.close("Venta", comment="SL")
        SL := 0

// Salida
plot(SL > 0 ? SL : na, style=plot.style_circles, color=color.red)
g1 = plot(banda_superior, color=color.aqua)
plot(banda_central, color=color.red)
g2 = plot(banda_inferior, color=color.aqua)
fill(g1, g2, color=color.aqua, transp=97)

// Dibujar niveles de sobrecompra/sobreventa del RSI
hline(rsi_overbought, "RSI Overbought", color=color.red)
hline(rsi_oversold, "RSI Oversold", color=color.green)