Dynamische Kanal-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-13 10:33:44
Tags:

img

Übersicht

Diese Strategie nutzt den dynamischen Kanalindikator, um die Marktrichtung auf der Grundlage von Kanal-Breakouts zu bestimmen, mit dem Ziel, die Trendrichtung zu erfassen.

Strategie Logik

Die Strategie verwendet die Eingabefunktion, um die Kanalperiode auf 20 Tage festzulegen. Sie berechnet dann das höchste Hoch über die letzten 20 Tage als Oberband und das niedrigste Tief über die letzten 20 Tage als Unterband.

Der Bereich oberhalb des oberen Bandes ist mit Grün gefüllt, und der Bereich unterhalb des unteren Bandes ist mit Rot gefüllt, was einen dynamischen Kanal bildet.

Der 200-Tage- gleitende Durchschnitt ema ((close,200) wird ebenfalls als Referenz zur Ermittlung des Gesamttrends dargestellt.

Die Strategie verwendet den EMA als Benchmark, um den Haupttrend zu beurteilen. Wenn der Close über der 200-Tage-Linie liegt, zeigt er einen Aufwärtstrend an. Wenn der Close darunter liegt, zeigt er einen Abwärtstrend an.

Bei einem Aufwärtstrend, wenn der Schlusskurs durch das obere Band bricht, wird ein langes Signal erzeugt.

Der lange Stop-Loss wird auf der unteren Band- oder Mittellinie basierend auf den Long/Short-Regeln eingestellt.

Analyse der Vorteile

  1. Der dynamische Kanal passt sich den sich ändernden Markttrends an.

  2. Handelssignale werden nach dem Trend-Handelsprinzip auf Basis von Ausbrüchen erzeugt.

  3. Der Haupttrend wird durch gleitende Durchschnitte in Kombination mit Kanalüberschreitungen bestimmt.

  4. Flexible Stop-Loss-Platzierung basierend auf den Marktbedingungen.

Risikoanalyse

  1. Eine falsche Einschätzung des wichtigsten Trends kann vom Markt abweichen.

  2. Eine falsche Kanalzeit setzt den falschen Handel voran.

  3. Ein Stoppverlust, der zu nahe am Kanal liegt, kann das Stoppen erhöhen.

  4. Die Breakout-Signale haben eine gewisse Verzögerung, möglicherweise fehlt der beste Einstiegspunkt.

Lösungen:

  1. Verwenden Sie mehrere Indikatoren, um den Haupttrend zu beurteilen und Fehler zu reduzieren.

  2. Optimierung der Kanalperiodenparameter für verschiedene Marktrhythmen.

  3. Anpassen der Stop-Loss-Position, um genug Puffer zu haben.

  4. Fügen Sie Filter zu Bildschirm Eingangssignale.

Optimierungsrichtlinien

  1. Mehr Indikatoren werden hinzugefügt, um den wichtigsten Trend zu beurteilen und die Genauigkeit zu verbessern.

  2. Um falsche Ausbrüche zu vermeiden, müssen Volumenindikatoren eingesetzt werden.

  3. Optimierung der Kanalperiodenparameter für verschiedene Produkte.

  4. Implementieren Sie dynamischen Stop-Loss.

  5. Zusätzliche Filter verbessern die Signalqualität und vermeiden unnötige Trades.

Schlussfolgerung

Diese Strategie folgt insgesamt dem Trend-Handelsprinzip und verwendet dynamische Kanäle, um den Volatilitätsbereich zu bestimmen und Signale aus Ausbrüchen zu generieren. Sie kann effektiv Trendveränderungen verfolgen und ist eine zuverlässige Trendfolgsstrategie.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 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/
// © pratyush_trades

//@version=4
strategy("Donchian Indexes", overlay=true)

length = input(20)
longRule = input("Higher High", "Long Entry", options=["Higher High", "Basis"])
shortRule = input("Lower Low", "Short Entry", options=["Lower Low", "Basis"])
longSL=input("Lower Low", "LONG SL", options=["Lower Low", "Basis"])
shortSL=input("Higher High", "SHORT SL", options=["Higher High", "Basis"])

hh = highest(high, length)
ll = lowest(low, length)

up = plot(hh, 'Upper Band', color = color.green)
dw = plot(ll, 'Lower Band', color = color.red)
mid = (hh + ll) / 2
midPlot = plot(mid, 'Basis', color = color.orange)
fill(up, midPlot, color=color.green, transp = 95)
fill(dw, midPlot, color=color.red, transp = 95)
plot(ema(close,200), "ema", color=color.orange)

if (close>ema(close,200))
    if (not na(close[length]))
        strategy.entry("Long", strategy.long, stop=longRule=='Basis' ? mid : hh)

if (close<ema(close,200))
    if (not na(close[length]))
        strategy.entry("Short", strategy.short, stop=shortRule=='Basis' ? mid : ll)

if (strategy.position_size>0)
    strategy.exit(id="Longs Exit",stop=longSL=='Basis' ? mid : ll)

if (strategy.position_size<0)
    strategy.exit(id="Shorts Exit",stop=shortSL=='Basis' ? mid : hh)

Mehr