Golden Cross Keltner Channel Trend nach der Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-02 14:31:10
Tags:

img

Übersicht

Die Golden Cross Keltner Channel Trend Following Strategie ist eine Strategie, die nur in Richtung des Trends handelt.

Grundsätze

Diese Strategie verwendet zwei gleitende Durchschnitte, einen kurzfristigen und einen langfristigen gleitenden Durchschnitt, um goldenen Kreuz und Todeskreuz zu bilden, um die Trendrichtung zu bestimmen. Gleichzeitig verwendet sie benutzerdefinierte Multiples, um die oberen und unteren Schienen des Keltner-Kanals zu zeichnen und Handelssignale zu generieren, wenn die Preise den Kanal durchbrechen.

Insbesondere prüft die Strategie zunächst, ob der langfristige gleitende Durchschnitt über dem kurzfristigen gleitenden Durchschnitt liegt, was auf ein goldenes Kreuz und einen Aufwärtstrend hinweist.

Wenn der Preis über die obere Schiene bricht, wird ein langes Signal erzeugt. Wenn der Preis unter die untere Schiene bricht, wird ein kurzes Signal erzeugt. Benutzer können die MA-Perioden und die Kanalbreite anpassen, um die Strategieparameter anzupassen.

Nach dem Einstieg verwendet die Strategie benutzerdefinierte ATR-Multiplikatoren für Take-Profit und Stop-Loss. Sie bietet auch zusätzliche Break-Even- und Stop-Loss-Bedingungen für eine flexiblere Positionskontrolle.

Analyse der Vorteile

Diese Strategie vereint die Vorteile von Trendfolgung und Kanalbreakouts und ermöglicht eine wirksame Identifizierung von Trends und die Erfassung von Chancen.

  1. Das goldene Kreuz filtert falsche Signale aus, die nicht mit dem großen Trend übereinstimmen.

  2. Der Kanalbruch mit Trendrichtung verbessert die Einstiegsgenauigkeit.

  3. Der Profit- und Stop-Loss-Ansatz bewahrt die Gewinne und kontrolliert die Risiken.

  4. Flexible Parameteranpassungen passen zu verschiedenen Produkten und Umgebungen.

  5. Es geht sowohl lang als auch kurz, erweitert die Anwendbarkeit.

Risikoanalyse

Trotz der Vorteile sind einige Risiken zu berücksichtigen:

  1. Verpasste Umkehrmöglichkeiten.

  2. Trendänderungen können zu Verlusten führen.

  3. Falsche Parameter können zu einem Über- oder Spärhandel führen.

  4. Über Nacht besteht ein Risiko.

  5. Das Risiko der Kurvenanpassung.

Die Lösungen umfassen die Optimierung von Parametern, die rechtzeitige Anpassung der MA-Periode und die Steuerung der Positionsgröße.

Optimierungsrichtlinien

Weitere Verbesserungsmöglichkeiten bestehen:

  1. Mehr Indikatoren hinzufügen, um ein Multifaktormodell zu erstellen und die Genauigkeit zu verbessern. z.B. MACD, RSI.

  2. Parameteroptimierung durch maschinelles Lernen für die Marktanpassungsfähigkeit.

  3. Dynamische Gewinn- und Stop-Loss-Regeln, um Rentabilität und Gewinn auszugleichen.

  4. Dynamische Positionsgrößerung basierend auf der Volatilität.

  5. Untersuchen Sie optimale Parameter für verschiedene Produkte.

  6. Verringern Sie die Handelsfrequenz, um die Gebühren zu minimieren.

Schlussfolgerung

Die Golden Cross Keltner Channel Trend Following Strategie ist im Allgemeinen ein stabiles und zuverlässiges Trend Following System.


/*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")


Mehr