Strategie für den Durchbruch des gleitenden Durchschnittskanals

Schriftsteller:ChaoZhang, Datum: 2023-12-12 17:38:19
Tags:

img

Übersicht

Dies ist eine Breakout-Strategie für gleitende Durchschnittskanäle, die auf gleitenden Durchschnitts- und Bereichskanälen basiert.

Strategie Logik

Die Kernlogik dieser Strategie lautet:

  1. Setzen Sie eine gleitende Durchschnittslinie einer bestimmten Periode als Mittellinie.

  2. Setzen Sie die oberen und unteren Kanallinien, indem Sie die mittlere Linie mit bestimmten Prozentsätzen multiplizieren. Die obere Linie ist die mittlere Linie * (100% + vorgegebener Prozentsatz). Die untere Linie ist die mittlere Linie * (100% - vorgegebener Prozentsatz).

  3. Wenn der Preis über die obere Linie bricht, gehen Sie kurz. Wenn der Preis unter die untere Linie bricht, gehen Sie lang.

  4. Stellen Sie die Auftragspreise an den entsprechenden oberen/unteren Linien fest.

  5. Schließen Sie Positionen, wenn der Preis auf die mittlere Linie zurückkehrt.

Es handelt also basierend auf den Ausbrüchen des gleitenden Durchschnittskanals.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Einfaches und klares Konzept, leicht zu verstehen und umzusetzen.

  2. Anpassungsfähige Parameter für verschiedene Marktbedingungen.

  3. Mittellinie und Kanalbereich können Marktlärm filtern und Trends erfassen.

  4. Begrenzung der Aufträge und Kontrolle der Risiken.

  5. Verluste reduzieren, wenn der Preis auf die mittlere Linie zurückkehrt.

Risikoanalyse

Es gibt auch einige Risiken:

  1. Die falsche Einstellung der Parameter kann zu einem Über-/Unzureichenden Handel führen.

  2. Hohe Wahrscheinlichkeit von falschen Ausbrüchen und Stop-Loss.

  3. Das Scheitern der mittleren und Kanallinien unter enormen Marktschwankungen.

  4. Vorzeitiger Ausgang, als er auf der Mittellinie geschlossen wurde.

Lösungen:

  1. Optimieren Sie Parameter wie MA-Zeitraum und Kanalanteil.

  2. Fügen Sie andere Indikatoren wie Volumen hinzu, um falsche Ausbrüche zu vermeiden.

  3. Erhöhen Sie die manuelle Intervention.

  4. Verwenden Sie eine längere MA-Periode und einen breiteren Kanalbereich.

Optimierung

Die Strategie kann in folgenden Aspekten verbessert werden:

  1. Fügen Sie Stop-Loss-Methoden wie Trailing-Stop hinzu, um Verluste zu begrenzen.

  2. Fügen Sie Filterindikatoren wie MACD hinzu, um falsche Signale zu reduzieren.

  3. Aktivieren Sie die automatische Optimierung der Parameter.

  4. Fügen Sie mehr offene Positionskriterien hinzu.

  5. Optimieren Sie MA und Kanalparameter.

Schlussfolgerung

Zusammenfassend ist dies eine praktische MA-Kanal-Breakout-Strategie. Sie hat eine einfache Logik für einen einfachen Einsatz, während der Kanalbereich Lärm filtern kann. Sie funktioniert gut in Trending-Märkten. Es gibt jedoch Risiken und Parameter zusammen mit zusätzlichen Filtern müssen für den tatsächlichen Handel optimiert werden. Die Strategie hat einen gewissen praktischen und Entwicklungspreis.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-08-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Robot WhiteBox ShiftMA", shorttitle = "Robot WhiteBox ShiftMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
src = input(ohlc4, title = "Source")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//SMAs
sma = sma(src, per) 
shortline = sma * ((100 + shortlevel) / 100)
longline = sma * ((100 + longlevel) / 100)
plot(shortline, linewidth = 2, color = red, title = "Short line")
plot(sma, linewidth = 2, color = blue, title = "SMA line")
plot(longline, linewidth = 2, color = lime, title = "Long line")

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0 and needlong
    strategy.entry("L", strategy.long, lot, limit = longline)
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = shortline)
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = sma)
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = sma)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Mehr