Bollinger Bands, RSI, MACD und Stochastic Multi-Indicator Fusion Trading Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-28 12:06:39
Tags:

Übersicht

Diese Strategie integriert Bollinger Bands, RSI, MACD und Stochastic, vier verschiedene technische Indikatoren, um lange und kurze Entscheidungen zu treffen. Zuerst bestimmt sie, ob der Preis außerhalb des Bollinger Bands Kanals liegt und nimmt entsprechend lange oder kurze Positionen ein. Dann überprüft sie, ob der RSI in Überkauf- oder Überverkaufszonen ist und tritt basierend auf der Richtung ein. Als nächstes sucht sie nach MACD-Goldenkreuz- und Todeskreuzsignalen und nimmt entsprechend Positionen ein. Schließlich identifiziert sie Stochastic-Goldenkreuz und Todeskreuz in Überkauf/Überkaufszonen. Mit Signalen aus allen vier Indikatoren nimmt die Strategie aggressivere Pyramidenpositionen an, um die Gewinne zu maximieren.

Grundsätze

Die Strategie verwendet hauptsächlich vier Indikatoren - Bollinger Bands, RSI, MACD und Stochastic.

Bollinger-Bänder werden auf Standardabweichungsniveaus über und unter einem einfachen gleitenden Durchschnitt dargestellt.

Der RSI berechnet die Dynamik als das Verhältnis von höheren Schließungen zu niedrigeren Schließungen. Werte unter 30 deuten auf einen Überverkaufssituation hin, während über 70 auf Überkauf hindeutet. Diese dienen als Handelssignale.

Der MACD ist der Unterschied zwischen kurz- und langfristigen gleitenden Durchschnitten.

Stochastische K- und D-Linienkreuzungen dienen auch als Handelssignale. K unter 20 deutet auf Überverkauf hin, während über 80 auf Überkauf hindeutet.

Die Kombination von Signalen aus diesen vier Indikatoren verbessert die Genauigkeit der Handelseinträge. Insbesondere geht man lang, wenn der Preis das obere Band der Bollinger-Bänder übersteigt, der RSI unter 30, das goldene Kreuz des MACD und das Stochastic K über D unter 20.

Vorteile

Der Hauptvorteil dieser Strategie besteht darin, dass die Kombination mehrerer Indikatoren die Genauigkeit und die Gewinnrate verbessert.

Erstens reduziert die Verwendung von Indikatoren über verschiedene Zeitrahmen hinweg - Bollinger für mittelfristige und langfristige Indikatoren und MACD, RSI und Stochastic für kurzfristige Indikatoren - Fehler.

Zweitens reduziert die Anforderung, dass alle Indikatoren ausgerichtet sind, falsche Signale.

Der RSI identifiziert Überkauf/Überverkauf, Bollinger-Trendänderungen, MACD-Schwankungen usw.

Schließlich maximieren Pyramidenpositionen mit bestätigten Signalen die Gewinne gegenüber Handelsgeschäften mit fester Menge.

Risiken

Einige Risiken zu berücksichtigen:

Erstens erschweren mehr Parameter und Indikatoren die Optimierung. Um die besten Kombinationen zu finden, sind umfangreiche Tests erforderlich.

Zweitens sind gleichzeitige Indikatorsignale selten, was zu einer geringen Handelsfrequenz führt.

Drittens kann Pyramidehandel Verluste verstärken, wenn Indikatoren falsche Signale geben.

Schließlich benötigen inkonsistente Indikatorsignale Entscheidungsregeln.

Verbesserungen

Einige Möglichkeiten zur Verbesserung der Strategie:

  1. Optimieren von Parametern durch genetische Algorithmen, Rastersuche usw., um die besten Kombinationen zu finden.

  2. Hinzufügen von Stop-Loss-Regeln, um Verluste zu kontrollieren, wenn sich der Preis nachteilig über Schwellenwerte bewegt.

  3. Verbesserung der Eingangslogik durch Bewertungssystem für inkonsistente Indikatorsignale und gewichtete Parameter.

  4. Optimierung der Ausgänge mit Gewinn-/Verlustdaten über die gesamten Haltezeiträume hinweg, um ideale Ausstiegsregeln zu generieren.

  5. Optimierung der für die Strategie am besten geeigneten Produkte und Zeitrahmen.

  6. Berücksichtigen Sie Handelskosten wie Schlupf und Provisionen bei Parameteroptimierung.

  7. Nutzen Sie maschinelles Lernen für adaptive Optimierung.

Schlussfolgerung

Diese Strategie kombiniert mehrere Indikatoren und Bestätigungsmechanismen für die Entscheidungsfindung. Mit geeigneten Parametern und Risikokontrollen kann es gute Ergebnisse erzielen. Aber die Komplexität und Risiken müssen durch kontinuierliche Verbesserungen der Stabilität angegangen werden. Die Suche nach optimalen Indikatorenkombinationen, wissenschaftliche Ein-/Ausgangsregeln und Risikokontrolle sind der Schlüssel für eine nachhaltige Rentabilität unter Marktbedingungen.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction",  minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)
lengthst = input(14, minval=1)
OverBoughtst = input(80)
OverSoldst = input(20)
smoothK = 3
smoothD = 3

k = sma(stoch(close, high, low, lengthst), smoothK)
d = sma(k, smoothD)



ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)

upper = basis + dev
lower = basis - dev

vrsi = rsi(price, lengthrsi)

if (not na(vrsi))
    if (crossover(vrsi, overSold))
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    if (crossunder(vrsi, overBought))
        strategy.entry("RsiSE", strategy.short, comment="RsiSE")

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")
    
    
if (not na(k) and not na(d))
    if (crossover(k,d) and k < OverSoldst)
        strategy.entry("StochLE", strategy.long, comment="StochLE")
    if (crossunder(k,d) and k > OverBoughtst)
        strategy.entry("StochSE", strategy.short, comment="StochSE")   
        
if (crossover(delta, 0))
    strategy.entry("MacdLE", strategy.long, comment="MacdLE")

if (crossunder(delta, 0))
    strategy.entry("MacdSE", strategy.short, comment="MacdSE")


Mehr