MACD-Stochastik-Range-Break-out-Strategie

Schriftsteller:ChaoZhang, Datum: 23.11.2023
Tags:

img

Übersicht

Die MACD Stochastics Range Breakout Strategie kombiniert die MACD und Stochastics Indikatoren zu einer quantitativen Handelsstrategie. Sie versucht, die Trendrichtung der Aktienkurse zu identifizieren und Positionen einzunehmen, wenn die Preise aus den Bereichszonen ausbrechen.

Bei Positionen berücksichtigt diese Strategie sowohl die Signale des MACD als auch die Stochastics, um die Qualität der Einträge zu verbessern.

Strategie Logik

Die MACD Stochastics Range Breakout Strategie basiert hauptsächlich auf folgenden Prinzipien:

  1. Der MACD-Indikator kann die Richtung und Dynamik der Preisentwicklung effektiv erkennen
  2. Der Stochastikindikator kann überkaufte oder überverkaufte Bedingungen einer Aktie erkennen
  3. Wenn der Aktienkurs für einen bestimmten Zeitraum variiert, ist eine signifikante Richtungsbewegung nach dem Durchbrechen des vorherigen Bereichs wahrscheinlich
  4. Die Kombination der Signale des MACD und der Stochastics auf die Bandbreakouts ermöglicht zeitnahe Einträge und verbessert die Qualität

Insbesondere verwendet die Strategie die MACDDIFF-Linie, die über die DEA-Linie kreuzt, um Aufwärtstrendsignale zu bestimmen.

In der Zwischenzeit erzeugen Kreuzungen zwischen der K-Linie und der D-Linie der Stochastics um Überkauf-/Überverkaufsbereiche (Default 30 und 70) ebenfalls Handelssignale.

Wenn der MACD und der Stochastiker ausgerichtete Signale geben, wird die Strategie eine Position einnehmen.

Nach dem Eintritt werden Stop-Loss- und Take-Profit-Punkte so eingestellt, dass einzelne Handelsverluste rationell kontrolliert und Gewinne erzielt werden.

Stärken

Die MACD Stochastics Range Breakout Strategie weist folgende Stärken auf:

  1. Die Kombination von Indikatoren verbessert die Signalqualität

    Die Verwendung von MACD und Stochastics filtert einige gefälschte Signale aus und ermöglicht eine bessere Einstiegsqualität.

  2. Erfassung von Ausbruchbewegungen und Trendhandel

    Die Strategie ist darauf spezialisiert, nach dem Ranging bedeutende Ausbruchsbewegungen zu erfassen.

  3. Optimiertes Stop-Loss-/Take-Profit-Mechanismus kontrolliert Risiken wirksam

    Die eingebaute Stop-Loss-/Take-Profit-Logik begrenzt den Einzelhandelsverlust und die rechtzeitige Sperrung der Gewinne.

Risiken

Trotz sorgfältiger Konzeption hat die MACD Stochastics Range Breakout Strategie einige inhärente Risiken:

  1. Fehlt der perfekte Einstiegszeitpunkt

    Falsche Ausbrüche sind häufig, bevor gültige Ausbrüche auftreten.

  2. Ausbruch versagt

    Auch wenn vor Eintritt angemessene Vorbereitungen getroffen werden, sind noch immer fehlgeschlagene Ausbrüche möglich, die zu Verlusten führen.

  3. Fehlende Optimierung der Parameter

    Unangemessene Parameter-Einstellungen beeinträchtigen die Strategie.

Um den oben genannten Risiken entgegenzuwirken, können folgende Optimierungen vorgenommen werden:

  1. Hinzufügen anderer Indikatoren zu Filtersignalen

  2. Manuelle Intervention zur Gewährleistung eines gültigen Ausbruchs

  3. Strenge Optimierungstests für mehrere Parametermengen

Optimierungsrichtlinien

Es bleibt Raum für eine weitere Optimierung der MACD Stochastics Range Breakout Strategie:

  1. Optimieren der MACD-Parameter, um die beste Kombination zu finden

  2. Optimieren Sie die Stochastikparameter, um die beste Kombination zu finden

  3. Einbeziehung anderer Indikatoren wie KDJ, BOLL zur Verbesserung der Eingangsqualität

  4. Verschiedene Haltezeiträume testen, Stop-Loss/Take-Profit optimieren

  5. Versuchskreuzparameterunterschiede

  6. Einführung von Algorithmen für maschinelles Lernen zur automatisierten Optimierung von Parametern

Schlussfolgerung

Die MACD Stochastics Range Breakout Strategie profitiert von Range Breakouts, indem sie auf der Grundlage ausgerichteter Signale von MACD und Stochastics eingeht. Der Stop-Loss/Take-Profit-Mechanismus kontrolliert die Risiken weiter.


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

//@version=5
strategy(title="macd stoch strategy", shorttitle="benzo MACD stoch",overlay=true)
// Getting inputs
fast_length = input(title = "Fast Length", defval = 180)
slow_length = input(title = "Slow Length", defval = 390)
src = input(title = "Source", defval = close)
signal_length = input.int(title = "Signal Smoothing",  minval = 1, maxval = 500, defval = 135)
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"])
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// hline(0, "Zero Line", color = color.new(#787B86, 50))
// plot(hist, title = "Histogram", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252)))
// plot(macd,   title = "MACD",   color = #2962FF)

// plot(signal, title = "Signal", color = #FF6D00)

periodK = input.int(14, title="%K Length", minval=1)
smoothK = input.int(1, title="%K Smoothing", minval=1)
periodD = input.int(3, title="%D Smoothing", minval=1)
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)
// plot(k, title="%K", color=#2962FF)
// plot(d, title="%D", color=#FF6D00)
// h0 = hline(80, "Upper Band", color=#787B86)
// hline(50, "Middle Band", color=color.new(#787B86, 50))
// h1 = hline(20, "Lower Band", color=#787B86)
// fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")


// Make inputs that set the take profit % (optional)
longProfitPerc = input.float(3, title="Long Take Profit (%)", minval=0.0, step=0.1) * 0.01

shortProfitPerc = input.float(3, title="Short Take Profit (%)",minval=0.0, step=0.1) * 0.01

// Calculate trading conditions
enterLong  = macd>signal and ta.crossover(k,30)
enterShort = macd<signal and ta.crossunder(k,70)

// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Plot take profit values for confirmation
plot(strategy.position_size > 0 ? longExitPrice : na,
     color=color.green, style=plot.style_circles,
     linewidth=3, title="Long Take Profit")

plot(strategy.position_size < 0 ? shortExitPrice : na,
     color=color.red, style=plot.style_circles,
     linewidth=3, title="Short Take Profit")

// Submit entry orders
if enterLong
    strategy.entry("long", strategy.long)

if enterShort
    strategy.entry("short", strategy.short)

// STEP 3:
// Submit exit orders based on take profit price
if strategy.position_size > 0
    strategy.exit("long TP", limit=longExitPrice)

if strategy.position_size < 0
    strategy.exit("short TP", limit=shortExitPrice)

Mehr