Handelsstrategie des MACD-Robot

Schriftsteller:ChaoZhang, Datum: 2023-12-18 17:30:15
Tags:

img

Übersicht

Diese Strategie wird als MACD Robot Trading Strategy bezeichnet. Sie bestimmt den Zeitpunkt des Kaufs und Verkaufs auf dem Markt, indem sie die Beziehung zwischen der schnellen und der langsamen Linie des MACD-Indikators berechnet und einen Trailing Stop Loss zur Kontrolle der Risiken anwendet.

Strategieprinzip

Diese Strategie wird hauptsächlich auf der Grundlage des MACD-Indikators entwickelt. Der MACD-Indikator besteht aus einer schnellen Linie und einer langsamen Linie. Die schnellen Linie ist ein kurzfristiger gleitender Durchschnitt und die langsame Linie ist ein langfristiger gleitender Durchschnitt. Die Beziehung zwischen den beiden spiegelt den Zustand des Kaufs und Verkaufs auf dem Markt wider. Wenn die schnelle Linie über die langsame Linie geht, ist es ein Kaufsignal, und wenn sie darunter geht, ist es ein Verkaufssignal.

In dieser Strategie werden die schnelle Linie und die langsame Linie jeweils mit dem EMA-Algorithmus berechnet, und die Perioden können angepasst werden.

Bei der Bestimmung des Kaufzeitraums überprüfen Sie nicht nur das goldene Kreuz der schnellen und langsamen Linien, sondern auch, ob der absolute Wert des MACD größer ist als die angepasste Kauflinie.

Bei der Bestimmung des Zeitpunktes des Verkaufs müssen die Todeskreuzung der schnellen und der langsamen Linien und die positive Signallinie gleichzeitig erfüllt werden, und dann wird ein Verkaufssignal ausgegeben, um die Position zu schließen.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Verwendung des MACD-Indikators zur Bestimmung von Handelssignalen mit hoher Zuverlässigkeit
  2. Die Erhöhung der Signalleitung verbessert die Signalqualität
  3. Der Trailing Stop Loss kontrolliert die Risiken wirksam
  4. Anpassbare Kauflinie passt Strategieempfindlichkeit an
  5. Alle Bedingungen beruhen auf der Indikatorberechnung und werden nicht von externen Faktoren beeinflusst

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Der MACD-Indikator ist zurückgeblieben und kann kurzfristige Handelsmöglichkeiten verpassen.
  2. Eine falsche Einstellung des Stop-Loss-Punkts kann zu unnötigen Verlusten führen.
  3. Parameter-Tuning erfordert viel Zeit für die Prüfung und Anpassung
  4. Auswirkungen von Transaktionskosten und Verschiebungen

Diese Risiken können durch eine angemessene Anpassung der Parameter, die Kombination anderer Indikatoren usw. verringert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Richtungen optimiert werden:

  1. Kombination mit anderen Indikatoren, um Signale wie KDJ, RSI usw. zu filtern.
  2. Hinzufügen von Algorithmen für maschinelles Lernen zur Bestimmung von Ein- und Ausstiegspunkten
  3. Verwenden Sie dynamischen Stop-Loss statt statischen Stop-Loss
  4. Test und Optimierung der MACD-Parameter und der Kauflinie
  5. Die Auswirkungen der Transaktionskosten bei der Anpassung der Strategie berücksichtigen

Schlussfolgerung

Insgesamt handelt es sich um eine trendfolgende Strategie mit hoher Zuverlässigkeit. Durch das Beurteilen des Trends über den MACD-Indikator und die Kontrolle von Risiken mit einem nachfolgenden Stop-Loss können stabile Anlageerträge erzielt werden.


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

//@version=3
strategy(shorttitle = "GBPUSD MACD", title = "GBPUSD MACD")
fastMA = input(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input(title="Slow moving average",  defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)

//MACD
// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
///END OF MACD

//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.00045)
linesell = input(title="Close Long", type=float, defval=0.0001)

//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)


//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100


//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, signal) and signal > 0
stop_level = strategy.position_avg_price * (1 - sl_inp)


//Order Entries
strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)

Mehr