
Die Strategie kombiniert die Spread-Channel-Anzeige und die MACD-Anzeige, um Trends zu beurteilen, und gehört zu den typischen Trend-Tracking-Strategien. Wenn der Preis über den Kurs geht und der MACD-Anzeige eine Goldforke zeigt, machen Sie mehr, wenn der Preis über den Kurs fällt und der MACD-Anzeige eine Todesforke zeigt, machen Sie einen Leerstand und berechnen Sie den Stop-Loss mit dem ATR-Anzeige.
Berechnen Sie MACD-Indikatoren, einschließlich Schnell-, Langspiel- und Histogramm.
Berechnen Sie den oberen und unteren Ausbreitungskanal. Der oberen Kurs ist der höchste Preis in N Tagen und der untere Kurs der niedrigste Preis in N Tagen.
Wenn der MACD-Fast-Line die Slow-Line aufwärts durchbricht, tun Sie mehr.
Wenn der Preis aus der Abwärtslinie fällt und die MACD-Schnelllinie nach unten die langsame Linie durchbricht, machen Sie eine Lücke.
Der Stop-Loss wird mit dem ATR-Indikator berechnet, der auf den Wert der ATR-Distanz zwischen Preis und Stop-Loss multipliziert wird.
Wenn der Preis ein Umkehrsignal erhält, wird die aktuelle Position abgewickelt.
Die Strategie kombiniert Trend- und Channel-Indikatoren, um Trends effektiv zu verfolgen. Die MACD-Indikatoren beurteilen die Preisentwicklung und -stärke, die Spread-Channel-Indikatoren beurteilen die Richtung. Die ATR-Stopps begrenzen die Einzelschäden.
Die Vorteile sind:
Die Parameter der Strategie sind einfach und leicht umzusetzen.
Es gibt viele Möglichkeiten, um eine Position zu eröffnen, um eine Trendchance zu ergreifen.
ATR-Ausfall kann das Risiko kontrollieren.
Der Rückzug kann kontrolliert werden.
Die Strategie birgt auch einige Risiken:
Die falsche Einstellung der Parameter des Ausbreitungskanals kann zu einem falschen Signal führen.
Die falsche Einstellung der MACD-Parameter kann auch dazu führen, dass das Warnsignal des Viticulture Administration System verzögert wird.
Eine übermäßige Stop-Loss-Einstellung kann zu einer Vergrößerung der Verluste führen.
Wenn sich die Situation dramatisch verändert, kann dies zu Verlusten führen.
Diese Strategie ist leicht zu überhändlerischen Ergebnissen.
Entsprechende Lösungen:
Optimierung der Parameter und Vorsicht bei der Aktienwahl.
Die Verluste werden streng eingestellt und verfolgt.
Positionsverwaltung wird entsprechend angepasst.
Diese Strategie kann optimiert werden durch:
Optimierung von MACD-Parametern, um die Sensitivität der Indikatoren zu erhöhen.
Optimierung der Stop-Loss-Algorithmen, um die Stop-Loss-Algorithmen näher am Preis zu bringen.
Erhöhung der Positionsverwaltung und Anpassung der Positionen an die Stärken und Schwächen der Trends.
Die Filterbedingungen wurden erweitert, um falsche Signale zu vermeiden.
Erhöhung der Auswahlkriterien für Handelsarten.
Das ist ein weiterer Schritt, um die Zeiträume der Transaktionen zu beurteilen.
Die Strategie ist insgesamt eine typische Trend-Tracking-Strategie. Sie kombiniert die Richtung der Spread-Channel-Indikatoren und die Trendstärke der MACD-Indikatoren. Sie kann schrittweise und effektiv Risiken kontrollieren. Die Stabilität und die Ertragsrate der Strategie können durch optimierte Parameter-Einstellungen, Stop-Loss-Methoden, Positionsmanagement usw. weiter verbessert werden.
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Robrecht99
//@version=5
strategy("Trend Following with Donchian Channels and MACD", overlay=false, margin_long=100, margin_short=100, pyramiding=3)
// MACD //
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.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"])
col_macd = input(#2962FF, "MACD Line ", group="Color Settings", inline="MACD")
col_signal = input(#FF6D00, "Signal Line ", group="Color Settings", inline="Signal")
col_grow_above = input(#26A69A, "Above Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")
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
plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
plot(macd, title="MACD", color=col_macd)
plot(signal, title="Signal", color=col_signal)
// Donchian Channels //
Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
//ATR and Position Size //
strategy.initial_capital = 50000
length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))
// Buy and Sell Conditions //
entrycondition1 = ta.crossover(macd, signal)
entrycondition2 = macd > signal
entrycondition3 = macd and signal > hist
sellcondition1 = ta.crossover(signal, macd)
sellcondition2 = signal > macd
sellcondition3 = macd and signal < hist
// Buy and Sell Signals //
if (close > h1 and entrycondition2 and entrycondition3)
strategy.entry("long", strategy.long, qty=amount)
stoploss = close - atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2 and sellcondition3)
strategy.close(id="long")
if (close < l1 and sellcondition2 and sellcondition3)
strategy.entry("short", strategy.short, qty=amount)
stoploss = close + atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2 and entrycondition3)
strategy.close(id="short")