
Diese Strategie ist ein klassisches Trend-Tracking-System. Es nutzt die Gold- und Diebstapler des beweglichen Durchschnitts, um die Richtung des Trends zu bestimmen und bei einem Durchbruch des Tangxian-Kanals einzutreten. Die Parameter des Tangxian-Kanals mit einer 50-Tage-Einstellung filtern effektiv kurzfristigen Marktlärm.
Die Strategie basiert hauptsächlich auf folgenden Punkten:
Der Trend wird anhand von Indikator-Moving-Averages mit einer Laufzeit von 40 und 120 Tagen ermittelt. Wenn die Schnelllinie von unten durch die langsame Linie geht, ist dies ein Goldfork, der einen Aufwärtstrend anzeigt. Wenn die Schnelllinie von oben durch die langsame Linie geht, ist dies ein Deckfork, der einen Abwärtstrend anzeigt.
Der Parameter für den Dongjian-Kanal wurde auf 50 Tage festgelegt und filtert kurzfristige Marktschwankungen. Nur wenn der Preis den Aufstieg durchbricht, ist mehr zu tun, und wenn er den Abstieg durchbricht, ist es leer, um zu vermeiden, eingeklemmt zu werden.
Die Stop-Loss-Einstellung ist auf das 4-fache des ATR unter dem Preis festgelegt. Das ATR ist eine effektive Maßnahme für die Volatilität und das Risiko des Marktes. Die Stop-Loss-Einstellung auf ein bestimmtes Vielfaches kann den Verlust eines einzelnen Handels kontrollieren.
Indikatorische Moving Averages entsprechen eher den aktuellen Preistrends als einfache Moving Averages, die zu glatt sind.
Die 50-Tage-Durchlaufzeit wird in Kombination mit der 40- und 120-Tage-Durchschnittslinie verwendet, um eine wirksame Filterung des falschen Durchbruchs zu ermöglichen.
Diese Strategie hat folgende Vorteile:
Die Kombination von Moving Averages kann die Richtung der Markttrends effektiv bestimmen. Die 40-Tage-Durchschnittslinie kann kurzfristige Trends erfassen, die 120-Tage-Durchschnittslinie kann mittlere und lange Trends bestimmen.
Der Tangxian-Kanal filtert den Lärm und verhindert die Verfolgung von Höhen und Tiefen. Nur der Preis, der den Kanal durchbricht, kann eingegeben werden, um den Erschütterungsbereich in der Mitte des Handelsmarktes effektiv zu vermeiden.
Die Stop-Loss-Punkte sind vernünftig eingestellt, um Einzelschaden zu kontrollieren und einen Ausbruch zu vermeiden. Einzelschadenkontrolle kann die Nachhaltigkeit der Gewinne gewährleisten.
Indikatorische Moving Averages entsprechen eher dem Trend der Preisänderungen, die Systemhaltezeit kann länger sein und entspricht dem Trend-Trading-Stil.
Die Auswahl der Moving Average-Parameter berücksichtigt sowohl die Sensitivität der Trend-Erfassung als auch die Stabilität der Geräuschfilterung.
Die Strategie birgt auch einige Risiken:
Die Risiken einer langfristigen Position: Diese Strategie gehört zu den Trend-Folgen-Strategien und wird bei einer langfristigen Querkorrektur oder einer Trendumkehr mit einem größeren Verlust konfrontiert sein.
False-Breakout-Risiko: Wenn der Preis in der Nähe des Kanals berührt wird, kann es zu einem bestimmten Prozentsatz von False-Breakouts kommen, was zu unnötigen Transaktionen führt.
Die Einstellung der Parameterrisiken: Die Einstellung der Moving Average und der Passage-Parameter ist zu subjektiv und erfordert eine Anpassung der Parameterkombinationen für verschiedene Märkte, was die Systemstabilität beeinträchtigt.
Risiko, dass der Stop-Loss-Punkt zu klein ist: Der eingestellte Stop-Loss-Punkt ist zu klein, so dass zu viele Stop-Loss-Ausgänge eingeleitet werden, was sich auf die Gewinne auswirkt.
Entsprechende Lösungen:
Diese Strategie kann in folgenden Richtungen optimiert werden:
Verschiedene Kombinationen von Gleichlinien werden getestet, um die beste Kombination von Parametern zu finden. Verschiedene Kombinationen von einfachen, Index-, Hull- und anderen Moving Averages können getestet werden.
Optimierung der Kanalzyklen und -parameter, um die Durchbruchsignale effektiver zu machen. Optimierung kann mit der Schwankungsfrequenz des Marktes kombiniert werden.
Optimierte Stop-Loss-Strategien, Trend-Tracking-Stops während des Trends und Fix-Stops nach dem Ende des Trends.
Mehrfaktor-Verifizierung mit MACD, KD und anderen Indikatoren verbessert die Genauigkeit der Signale.
Erhöhung der Positionsmanagement-Strategie, Aufstockung der Positionen im Trendlauf und Optimierung der Gewinne.
Die Parameterkombinationen werden nach den Merkmalen der verschiedenen Sorten ausgewählt, um die Robustheit der Systemparameter zu erhöhen.
Die Strategie als Ganzes als ein Trend-Tracking-System eher typisch und einfach. Die Kern liegt in der Verwendung von Moving Averages und Durchbruch-Filter von Kanälen. Die Stop-Loss-Strategie ist auch klassisch und praktisch. Die Strategie kann als Grundrahmen für die Entwicklung von Quantifizierungssystemen verwendet werden, kann auch direkt in Betrieb genommen werden, und die Erträge sind relativ stabil.
/*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("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)
// Backtest Range //
Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")
//Moving Averages //
len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")
// 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)
strategy.initial_capital = 50000
//ATR and Position Size //
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(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast
// Buy and Sell Signals //
if (close > h1 and entrycondition2)
strategy.entry("long", strategy.long, qty=amount)
stoploss = close - atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
strategy.close(id="long")
if (close < l1 and sellcondition2)
strategy.entry("short", strategy.short, qty=amount)
stoploss = close + atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
strategy.close(id="short")