MACD-Strategie nur lang

Schriftsteller:ChaoZhang, Datum: 2024-01-12 11:02:06
Tags:

img

Übersicht

Diese Strategie basiert auf dem MACD-Indikator und langen und schließen Linien, um den langfristigen Handel des Währungspaares umzusetzen. Es eröffnet Positionen, wenn die MACD-Indikatorlinie über die lange Linie kreuzt und schließt Positionen, wenn die MACD-Indikatorlinie unterhalb der Schließlinie kreuzt.

Strategie Logik

Die Strategie verwendet schnelle und langsame Linien des MACD-Indikators. Die schnelle Linie hat einen Parameter von 12-Tage-EMA und die langsame Linie hat einen Parameter von 26-Tage-EMA. Der Unterschied zwischen den beiden Linien ist das MACD-Histogramm. Darüber hinaus wird das 9-Tage-EMA als Signallinie berechnet. Es geht lang, wenn das MACD-Histogramm über 0,04 überschreitet und schließt Long-Positionen, wenn es unter 0,015 überschreitet.

Die Strategie berechnet zunächst die schnelle Linie, die langsame Linie und die Signallinie des MACD-Indikators. Dann wird die lange Linie auf -0,04 gesetzt, die Schließlinie auf 0,015. Wenn das aktuelle MACD-Histogramm größer als die lange Linie ist, geht es lang. Wenn das aktuelle MACD-Histogramm kleiner als die Schließlinie ist, schließt es die lange Position. Darüber hinaus wird die Stop-Loss-Linie auf 95% des Einstiegspreises gesetzt.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Verwendung des MACD-Indikators, um die Marktentwicklung mit hoher Genauigkeit zu beurteilen
  2. Doppelfilter mit langen und engen Linien verhindern falsche Signale
  3. Stop-Loss-Strategie kontrolliert Risiken wirksam
  4. Einfache und klare Logik, leicht zu verstehen und umzusetzen
  5. Nur Bedarf und MACD-Indikator, weniger Ressourcenbeschäftigung

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Der MACD-Indikator ist etwas zurückgeblieben, kann kurzfristige Chancen verpassen
  2. Die Einstellung von Stop-Loss ist möglicherweise zu konservativ, um langfristige Trends zu verfolgen.
  3. Parameter-Tuning erfordert viel Backtesting, sonst kann Überanpassung auftreten
  4. Wirksamkeit für andere Paare unsicher

Methoden wie die Anpassung von Parametern, die Kombination anderer Indikatoren können zur Optimierung und Verbesserung verwendet werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Verschiedene MACD-Parameterkombinationen testen, um bessere Parameter zu finden

    Schnelle Linie, langsame Linie, Signallinie mit unterschiedlichen Längen können versucht werden, geeignete Kombinationen zu finden

  2. Versuchen Sie andere Indikatoren.

    Indikatoren wie RSI, KD können sehr unterschiedliche Ergebnisse haben

  3. Optimierung der Längen- und Schließlinienparameter

    Mehr geeignete Parameter können durch wiederholtes Backtesting gefunden werden

  4. Anpassung der Stop-Loss-Strategie

    Überlegen Sie Trailing Stops, um den Stop Loss dynamischer zu gestalten

  5. Test auf verschiedenen Währungspaaren

    Anwendung der Strategie auf andere Paare und Untersuchung der Auswirkungen

Schlussfolgerung

Zusammenfassend ist dies eine insgesamt sehr einfache und intuitive langfristige Handelsstrategie. Sie beurteilt die Marktbedingungen mithilfe des MACD-Indikators und setzt doppelte Filterkriterien, um falschen Handel zu reduzieren. Die Risikokontrolle wird auch durch Stop-Loss konfiguriert. Die Logik ist klar und die Ressourcenbesetzung ist gering. Es ist einfach zu verstehen und umzusetzen, es lohnt sich zu empfehlen. Natürlich gibt es noch viel Raum für Verbesserungen durch Parameter-Tuning, Indikatoränderung und andere Mittel, um die Strategie noch herausragender zu machen.


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

//@version=3
strategy(shorttitle = "GBPJPY MACD", title = "GBPJPY 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.04)
linesell = input(title="Close Long", type=float, defval=0.015)

//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, linesell)
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