
Die Gold-Cross-Celtic-Channel-Trend-Tracking-Strategie ist eine Strategie, bei der nur in der Richtung des Trends gehandelt wird. Sie kombiniert den Moving Average Gold-Cross mit dem Celtic-Channel als Einstiegssignal, um die Richtung des Trends zu erfassen.
Die Strategie verwendet zwei Moving Averages, kurzfristige Moving Averages und langfristige Moving Averages, um die Richtung des Trends zu bestimmen. Sie bildet eine Gold- und eine Todes-Kreuzung. Gleichzeitig zeichnet sie mit benutzerdefinierten Multiplikatoren die Auf- und Abwärtsbahnen der Kelterkanäle ab, die ein Handelssignal erzeugen, wenn der Preis den Kanal durchbricht.
Die Strategie beurteilt zunächst, ob der langfristige bewegliche Durchschnitt über dem kurzfristigen beweglichen Durchschnitt liegt, und wenn ja, wird er als Trend nach oben für Gold gekreuzt; wenn der kurzfristige bewegliche Durchschnitt unter dem langfristigen beweglichen Durchschnitt liegt, wird er als Trend nach unten für Tod gekreuzt.
Auf der Grundlage von Trendbeurteilungen erzeugt der Trend mehrere Signale, wenn der Preis die Oberbahn überschreitet; wenn der Preis die Unterbahn überschreitet, erzeugt er ein Bremssignal. Der Benutzer kann die Moving Average-Periode und die Kanalbreite selbst anpassen, um die Parameter der Strategie anzupassen.
Nach dem Eintritt nutzt die Strategie die benutzerdefinierte Stop-Stop-Loss-ATR-Multiplikation, um den Stop-Stop-Loss-Betrieb einzurichten. Gleichzeitig bietet die Strategie zusätzliche durchbrechende Stop-Stop- und Stop-Loss-Bedingungen, um die Position flexibler zu kontrollieren.
Die Strategie kombiniert die Vorteile von Trend-Tracking und Channel-Breakings, um die Marktentwicklung und die Chance, Trends zu erfassen, effektiv zu beurteilen. Die konkreten Vorteile sind:
Die Verwendung von Goldcrosses, um die Richtung der Trends zu bestimmen, kann effektiv Geräuschtransaktionen filtern, die nicht den großen Trends entsprechen.
Der Durchbruch des Keltenkanals in Kombination mit der Trendrichtung kann die Zeitgenauigkeit des Markteintritts verbessern.
Die Stop-Loss-Mechanismen können Gewinne sichern und Risiken aktiv kontrollieren.
Die Strategieparameter können flexibel angepasst werden, um für verschiedene Sorten und Marktbedingungen geeignet zu sein.
Es ist möglich, gleichzeitig mehr als nur eine Kurve zu machen, um den Anwendungsbereich der Strategie zu erweitern.
Obwohl diese Strategie viele Vorteile hat, gibt es einige Risiken, die beachtet werden müssen:
Es gibt ein gewisses Risiko, dass man die Chance verpasst, sich umzukehren.
Wenn sich der Trend ändert, besteht die Gefahr von Rückschlägen.
Die falsche Einstellung der Parameter kann zu zu lockeren oder zu häufigen Transaktionen führen.
Es ist ein gewisses Risiko, über Nacht zu bleiben.
Es besteht ein gewisses Risiko einer Kurvenübereinstimmung.
Dies kann durch Parameteroptimierung, eine zeitgemäße Anpassung der Moving-Average-Periode oder eine angemessene Verkleinerung der Positionsgröße verringert werden.
Die Strategie kann noch weiter optimiert werden:
Es kann in Erwägung gezogen werden, mehr Indikatoren zu verwenden, um ein Multifaktor-Modell zu erstellen und die Strategie-Genauigkeit zu verbessern. Zum Beispiel die Einbeziehung von MACD, RSI usw.
Die Parameter können basierend auf maschinellem Lernen optimiert werden, um sie besser an unterschiedliche Marktumgebungen anzupassen.
Es kann in Erwägung gezogen werden, die Stop-Loss-Bedingungen dynamisch anzupassen, um größere Gewinne zu erzielen, unter der Voraussetzung, dass die Gewinne gesichert sind.
Die Größe der Position kann an die Dynamik der Volatilität angepasst werden.
Erforschung der Parameterpräferenzen verschiedener Arten und Erstellung von Parameterkombinationen, die für verschiedene Arten geeignet sind.
Hinzufügen von Mechanismen, die die Häufigkeit der Transaktionen senken, um die Auswirkungen der Transaktionsgebühren zu verringern.
Die Gold-Cross-Celtic-Channel-Trend-Tracking-Strategie ist insgesamt eine relativ stabile und zuverlässige Trend-Tracking-Strategie. Sie kombiniert die Vorteile von Trendurteilen und Kanalbrechern, um die Richtung der Markttrends effektiv zu erkennen und hochprobable Handelsmöglichkeiten auszuwählen. Durch die Optimierung der Parameter und die Verbesserung der Mechanismen kann die Strategie zu einem leistungsfähigen Instrument für den quantitativen Handel werden.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © OversoldPOS
//@version=5
// strategy("Keltner Channel Strategy by OversoldPOS", overlay=true,initial_capital = 100000,default_qty_type = strategy.percent_of_equity,default_qty_value = 10, commission_type = strategy.commission.cash_per_order, commission_value = 7)
// Parameters
length = input(21, title="MA Length")
Entrymult = input(1, title="Entry ATR")
profit_mult = input(4, title="Profit Taker")
exit_mult = input(-1, title="Exit ATR")
// Moving Average Type Input
ma_type = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "WMA"])
// Calculate Keltner Channels for different ATR multiples
atr_value = ta.atr(length)
basis = switch ma_type
"SMA" => ta.sma(close, length)
"EMA" => ta.ema(close, length)
"WMA" => ta.wma(close, length)
//
EntryKeltLong = basis + Entrymult * ta.atr(10)
EntryKeltShort = basis - Entrymult * ta.atr(10)
upper_channel1 = basis + 1 * ta.atr(10)
lower_channel1 = basis - 1 * ta.atr(10)
upper_channel2 = basis + 2 * ta.atr(10)
lower_channel2 = basis - 2 * ta.atr(10)
upper_channel3 = basis + 3 * ta.atr(10)
lower_channel3 = basis - 3 * ta.atr(10)
upper_channel4 = basis + 4 * ta.atr(10)
lower_channel4 = basis - 4 * ta.atr(10)
// Entry condition parameters
long_entry_condition = input(true, title="Long Positions")
short_entry_condition = input(true, title="Enable Short Positions")
// Additional conditions for long and short entries
is_long_entry = ta.ema(close, 20) > ta.ema(close, 50)
is_short_entry = ta.ema(close, 20) < ta.ema(close, 50)
// Additional conditions for long and short entries
MAShort = input(50, title="Short MA for Golden Cross")
MALong = input(200, title="Long MA for Golden Cross")
is_long_entry2 = ta.ema(close, MAShort) > ta.ema(close, MALong)
is_short_entry2 = ta.ema(close, MAShort) < ta.ema(close, MALong)
// Exit condition parameters
long_exit_condition1_enabled = input(true, title="Enable Long Profit Taker")
long_exit_condition2_enabled = input(true, title="Enable Long Stop")
short_exit_condition1_enabled = input(true, title="Enable Short Profit Taker")
short_exit_condition2_enabled = input(true, title="Enable Short Stop")
// Take Profit condition parameters
take_profit_enabled = input(true, title="Enable Take Profit Condition")
Takeprofit = basis + profit_mult * atr_value
STakeprofit = basis - profit_mult * atr_value
// Long entry condition
long_condition = long_entry_condition and ta.crossover(close, EntryKeltLong) and is_long_entry2
// Short entry condition
short_condition = short_entry_condition and ta.crossunder(close, EntryKeltShort) and is_short_entry2
// Exit conditions
long_exit_condition1 = long_exit_condition1_enabled and close > Takeprofit
long_exit_condition2 = long_exit_condition2_enabled and close < basis + exit_mult * atr_value
short_exit_condition1 = short_exit_condition1_enabled and close < STakeprofit
short_exit_condition2 = short_exit_condition2_enabled and close > basis - exit_mult * atr_value
// Strategy logic
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)
if (long_exit_condition1 or long_exit_condition2)
strategy.close("Long")
if (short_exit_condition1 or short_exit_condition2)
strategy.close("Short")
// Moving Averages
var float MA1 = na
var float MA2 = na
if (ma_type == "SMA")
MA1 := ta.sma(close, MAShort)
MA2 := ta.sma(close, MALong)
else if (ma_type == "EMA")
MA1 := ta.ema(close, MAShort)
MA2 := ta.ema(close, MALong)
else if (ma_type == "WMA")
MA1 := ta.wma(close, MAShort)
MA2 := ta.wma(close, MALong)
// Plotting Keltner Channels with adjusted transparency
transparentColor = color.rgb(255, 255, 255, 56)
plot(upper_channel1, color=transparentColor, title="Upper Channel 1")
plot(lower_channel1, color=transparentColor, title="Lower Channel 1")
plot(upper_channel2, color=transparentColor, title="Upper Channel 2")
plot(lower_channel2, color=transparentColor, title="Lower Channel 2")
plot(upper_channel3, color=transparentColor, title="Upper Channel 3")
plot(lower_channel3, color=transparentColor, title="Lower Channel 3")
plot(upper_channel4, color=transparentColor, title="Upper Channel 4")
plot(lower_channel4, color=transparentColor, title="Lower Channel 4")
plot(basis, color=color.white, title="Basis")
plot(MA1, color=color.rgb(4, 248, 216), linewidth=2, title="Middle MA")
plot(MA2, color=color.rgb(220, 7, 248), linewidth=2, title="Long MA")