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.
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.
Die Strategie weist folgende Vorteile auf:
Die Strategie birgt auch einige Risiken:
Diese Risiken können durch eine angemessene Anpassung der Parameter, die Kombination anderer Indikatoren usw. verringert werden.
Die Strategie kann in folgenden Richtungen optimiert werden:
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)