Diese Strategie kombiniert Bollinger Band, gleitenden Durchschnitt und MACD, um ein relativ vollständiges Handelssystem zu bilden.
Die Strategie trägt den Namen
Die grundlegende Handelslogik lautet:
Vergleichen Sie Bollinger Mid Band, EMA und MACD Nulllinie, um festzustellen, ob sich der Markt in einer Auf- oder Abwärtstrendphase befindet.
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.
Einmal eingegeben, werden festgelegte Ziel- und Stop-Loss-Niveaus voreingestellt.
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.
Trotz der Verwendung mehrerer Analysewerkzeuge sind die wichtigsten Risiken:
Unzulängliche BB-Parameter spiegeln nicht eindeutig den primären Trend wider.
Das EMA-System signalisiert lang, aber der MACD wird nicht eindeutig positiv, die bärischen Kräfte können sich ausdehnen.
Gewinnziel-/Stop-Loss-Bereich zu breit, einzelne Handelsverluste werden größer.
Die wichtigsten Lösungen sind:
Anpassen der BB-Parameter, um sicherzustellen, dass das mittlere Band den Haupttrend effektiv widerspiegelt.
Einführung technischer Indikatoren zur Beurteilung der Bull/Bear-Momentum.
Bewertet historische Trades und optimiert Gewinnziel/Stop-Loss.
Die Strategie kann in folgenden Bereichen weiter verbessert werden:
Mehr Indikatoren wie KDJ, ATR usw. sollen eingeführt werden, um die Trendbeurteilung zu erleichtern und die Genauigkeit zu verbessern.
Implementieren Sie anspruchsvollere Stopps wie Trailing Stop, Breakout Stop usw.
Bewertung der Leistung verschiedener Produkte, Feinabstimmung der Parameter auf verschiedene Marktbedingungen.
Test- und Anpassungsstrategie basierend auf Backtest-Ergebnissen in verschiedenen Zeitrahmen und Märkten.
Einbeziehung von maschinellem Lernen für automatische Parameteroptimierung und dynamische Strategieaktualisierung.
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)