Bollinger-Band, gleitender Durchschnitt und MACD kombinierte Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-04 15:42:23
Tags:

img

Strategieübersicht

Diese Strategie kombiniert Bollinger Band, gleitenden Durchschnitt und MACD, um ein relativ vollständiges Handelssystem zu bilden.

Strategiebezeichnung und -grundlage

Die Strategie trägt den Namen Triangle Anchoring Trend Tracking Strategy. Der Name unterstreicht die Verwendung von drei technischen Indikatoren zur Bestimmung der Trendrichtung und Anker-Eingangspunkte.

Die grundlegende Handelslogik lautet:

  1. Vergleichen Sie Bollinger Mid Band, EMA und MACD Nulllinie, um festzustellen, ob sich der Markt in einer Auf- oder Abwärtstrendphase befindet.

  2. Nach der Identifizierung eines Trends überprüft die Strategie, ob die EMA das BB-Mitteband überschreitet und ob das MACD-Histogramm die Signallinie überschreitet, um Einträge zu bestimmen.

  3. Einmal eingegeben, werden festgelegte Ziel- und Stop-Loss-Niveaus voreingestellt.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die gleichzeitige Verwendung von Trend-, gleitenden Durchschnitts- und MACD-Tools zur Entscheidungsführung.

Erstens spiegelt der BB-Mitteband eindeutig die aktuelle primäre Trendrichtung wider. Die Rolle der EMA besteht darin, den Fortschritt der Trends zu verfolgen.

Zweitens hat BB selbst starke Umschlagseigenschaften. Der Bereich um das mittlere Band zeigt auch bestimmte Unterstützungs-/Widerstandsniveaus an. Daher haben EMA-Crossovers einen Signalwert.

Darüber hinaus misst der MACD das Wachsen und Abklingen der bullish/bearish Dynamik. Seine absolute Größe repräsentiert hohe oder niedrige Menge Emotionen, auch auf mögliche Umkehrungen hinweist.

Schließlich steuert das vorgegebene Gewinnziel und der Stop-Loss das Risiko/die Rendite einzelner Trades und gewährleistet so die allgemeine Stabilität.

Risikoanalyse

Trotz der Verwendung mehrerer Analysewerkzeuge sind die wichtigsten Risiken:

  1. Unzulängliche BB-Parameter spiegeln nicht eindeutig den primären Trend wider.

  2. Das EMA-System signalisiert lang, aber der MACD wird nicht eindeutig positiv, die bärischen Kräfte können sich ausdehnen.

  3. Gewinnziel-/Stop-Loss-Bereich zu breit, einzelne Handelsverluste werden größer.

Die wichtigsten Lösungen sind:

  1. Anpassen der BB-Parameter, um sicherzustellen, dass das mittlere Band den Haupttrend effektiv widerspiegelt.

  2. Einführung technischer Indikatoren zur Beurteilung der Bull/Bear-Momentum.

  3. Bewertet historische Trades und optimiert Gewinnziel/Stop-Loss.

Optimierungsrichtlinien

Die Strategie kann in folgenden Bereichen weiter verbessert werden:

  1. Mehr Indikatoren wie KDJ, ATR usw. sollen eingeführt werden, um die Trendbeurteilung zu erleichtern und die Genauigkeit zu verbessern.

  2. Implementieren Sie anspruchsvollere Stopps wie Trailing Stop, Breakout Stop usw.

  3. Bewertung der Leistung verschiedener Produkte, Feinabstimmung der Parameter auf verschiedene Marktbedingungen.

  4. Test- und Anpassungsstrategie basierend auf Backtest-Ergebnissen in verschiedenen Zeitrahmen und Märkten.

  5. Einbeziehung von maschinellem Lernen für automatische Parameteroptimierung und dynamische Strategieaktualisierung.

Schlussfolgerung

Diese Strategie nutzt BB, MA und MACD zusammen. Sie hat ein klares Trendbeurteil, bestimmte Umschlagmerkmale und erfasst auch einige Umkehrungen. Mit mehr Hilfswerkzeugen zur Beurteilung von Eintritten/Ausgängen kann sie eine zuverlässigere Leistung erzielen. Eine weitere Bewertung und Verbesserung dieser Strategie ist gerechtfertigt und wird erwartet, dass sie ein robustes quantitatives Werkzeug erzeugt.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Combined Strategy", overlay=true, shorttitle="Comb Strat", default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Precio de beneficio y Stop Loss
takeProfitTicks = 87636
stopLossTicks = 53350

// Bollinger Bands + EMA
length_bb = input(150, title="BB Length")
src_bb = input(close, title="BB Source")
mult = input(2.0, title="BB StdDev")
basis = ta.sma(src_bb, length_bb)
dev = mult * ta.stdev(src_bb, length_bb)
upper = basis + dev
lower = basis - dev

len_ema = input(34, title="EMA Length")
src_ema = input(close, title="EMA Source")
out_ema = ta.ema(src_ema, len_ema)

typeMA = input("SMA", title="Method")
smoothingLength = input(5, title="Length")

var float smoothingLine = na
if (typeMA == "SMA")
    smoothingLine := ta.sma(out_ema, smoothingLength)
else if (typeMA == "EMA")
    smoothingLine := ta.ema(out_ema, smoothingLength)

// MACD
fast_length = input(title="Fast Length", defval=9)
slow_length = input(title="Slow Length", defval=17)
src_macd = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval=1, maxval=50, defval=9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

fast_ma = sma_source == "SMA" ? ta.sma(src_macd, fast_length) : ta.ema(src_macd, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src_macd, slow_length) : ta.ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// Condiciones de compra y venta
longCondition = (out_ema > basis) and (macd > signal) and (signal > 0)
shortCondition = (out_ema < basis) and (macd < signal) and (signal < 0)

// Variables de estado
var bool longExecuted = na
var bool shortExecuted = na

// Estrategia
if (longCondition and not longExecuted)
    strategy.entry("Long", strategy.long)
    longExecuted := true
    shortExecuted := na
if (shortCondition and not shortExecuted)
    strategy.entry("Short", strategy.short)
    shortExecuted := true
    longExecuted := na

// Take Profit y Stop Loss para Compras y Ventas Cortas
strategy.exit("Take Profit/Close Long", from_entry="Long", profit=takeProfitTicks, loss=stopLossTicks)
strategy.exit("Take Profit/Close Short", from_entry="Short", profit=takeProfitTicks, loss=stopLossTicks)

// Cierre de posiciones cuando la dirección cambia
if ((out_ema < basis) and (macd < signal))
    strategy.close("Long")
    longExecuted := na
if ((out_ema > basis) and (macd > signal))
    strategy.close("Short")
    shortExecuted := na

// Plots
plot(basis, "BB Basis", color=#FF6D00)
plot(upper, "BB Upper", color=color.new(#2962FF, 0.5))
plot(lower, "BB Lower", color=color.new(#2962FF, 0.5))

plot(smoothingLine, title="Smoothing Line", color=#f37f20, linewidth=2)

hline(0, "Zero Line", color=color.new(#787B86, 50))
plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? color.green : color.red) : (hist[1] < hist ? color.red : color.green)))
plot(macd, title="MACD", color=color.blue)
plot(signal, title="Signal", color=color.orange)


Mehr