Trendstrategie basierend auf Kanalausbruch


Erstellungsdatum: 2023-09-15 12:02:10 zuletzt geändert: 2023-09-15 12:02:10
Kopie: 0 Klicks: 739
1
konzentrieren Sie sich auf
1617
Anhänger

In diesem Artikel wird eine quantitative Strategie beschrieben, bei der ein Kanalbruch genutzt wird, um Trends zu handeln. Die Strategie identifiziert die Richtung des Trends über den EMA-Kanal und entscheidet über die Umkehrung der Brin-Band und führt die Umkehrung durch.

  1. Strategische Grundlagen

Die Strategie umfasst folgende Elemente:

  1. Einrichtung eines mittleren EMAs und Ausweitung des Up-Down-Kanals nach Maß;

  2. Wenn der Preis die oberen Kanallinien überschreitet, wird mehr Tracking durchgeführt; wenn er die unteren Kanallinien überschreitet, wird ein Leer Tracking durchgeführt.

  3. Wenn die Brin-Streifen schrumpfen, ist es wichtig, dass der Trend umgekehrt wird und die Umkehrung vorgenommen wird.

  4. Das ATR-Stopp-System soll das Risiko von Verlusten begrenzen.

  5. Die Parameter des Kanals können angepasst werden, um die optimale Kombination von Parametern zu finden.

Die Strategie beurteilt die Richtung der Mainstream-Trends über die EMA-Kanäle und nutzt die Brin-Band, um Umkehrmöglichkeiten zu identifizieren und ein vollständiges Trendsystem zu bilden.

  1. Strategische Vorteile

Der größte Vorteil dieser Strategie ist, dass die Indikatoren vernünftig verwendet werden, die EMA entscheidet, dass die Brin-Band die Umkehrung erfasst.

Ein weiterer Vorteil ist, dass die Stop-Loss-Einstellungen direkt wirksam sind und das Risiko kontrolliert werden kann.

Schließlich können die Parameter individuell angepasst und für verschiedene Sorten optimiert werden.

  1. Potenzielle Risiken

Aber es gibt auch Probleme mit dieser Strategie:

Zunächst einmal sind die EMA und der Blink-Band-Indikator rückständig.

Zweitens muss man die Gefahr des Scheiterns der Umkehrung berücksichtigen.

Letztendlich erfordert die Parameteroptimierung viel Arbeit, um eine Überoptimierung zu vermeiden.

Vier Inhalte, Zusammenfassung

Dieser Artikel beschreibt eine Strategie zum Trendhandel, die EMA-Kanal-Breakings nutzt. Sie identifiziert die vorherrschenden Trends und handelt an den Wendepunkten rückwärts. Die Strategie kann durch Parameteroptimierung zu stabilen Erträgen führen, muss aber auch die Schwierigkeiten der Optimierung und des Rückstands der Indikatoren kontrollieren.

Strategiequellcode
/*backtest
start: 2023-08-15 00:00:00
end: 2023-09-14 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="[mdeacey] EMA Percentage Channel + Bollinger Band Trending Strategy", shorttitle="[mdeacey] EMA% Channel + BB Trend Strategy", overlay=true)

//EMA 200

len = input(title="EMA Length", type=input.integer, defval=100)
srce = input(title="EMA Source", type=input.source, defval=close)

ema1= ema(srce,len)

percent = input(title="Inside Channel (%)", type=input.float, defval= 1) 
valuee = (percent*ema1)/100
upperbande = ema1 + valuee
lowerbande = ema1 - valuee
///2
percent2 = input(title="Outside Channel (%)", type=input.float, defval= 2) 
valuee2 = (percent2*ema1)/100
upperbande2 = ema1 + valuee2
lowerbande2 = ema1 - valuee2

plot(upperbande, title='Inside Channel Upperband', color=color.black, linewidth=1, style=plot.style_line )
plot(lowerbande, title='Inside Channel Lowerband', color=color.black, linewidth=1, style=plot.style_line )
plot(upperbande2, title='Outside Channel Upperband', color=color.black, linewidth=1, style=plot.style_line )
plot(lowerbande2, title='Outside Channel Lowerband', color=color.black, linewidth=1, style=plot.style_line )

length = input(20, minval=2)
src = input(close, title="Close price")
mult = input(2.0, title="Multiplier", minval=0.001, maxval=50)

MA2 = sma(src, length)
dev = mult * stdev(src, length)
upper = MA2 + dev
lower = MA2 - dev

signalColor = crossunder(close, upper) ? color.red : crossover(close, lower) ? color.green : color.white

barcolor(color=signalColor)
nopo= strategy.position_size==0

upperBand = plot(upper, title='Upper Bollinger Band', color=color.gray, linewidth=1)
lowerBand = plot(lower, title='Lower Bollinger Band', color=color.gray, linewidth=1)
fill(upperBand, lowerBand, title='Bollinger Band', color=color.black)
strategy.entry("Long",true,when = crossover(close,lower)  and close <lowerbande and close>lowerbande2)
strategy.close("Long",when = crossunder(close,lowerbande2))//crossunder(close,lowerbande) or crossunder(close,lowerbande2))

strategy.entry("Short",false,when = crossunder(close,upper)  and close >upperbande and close<upperbande2)
strategy.close("Short",when = crossover(close,upperbande2) )//crossover(close,upperbande) or crossover(close,upperbande2) )

//Inputs
atrPeriod = input(defval=14, title="ATR Period",group='ATR Stoploss', type=input.integer) // Adjust this to change the ATR calculation length
multiplierPeriod = input(defval=1.75, title="ATR Multiplier",group='ATR Stoploss',  type=input.float)// Adjust this to change the distance between your candles and the line

//ATR Calculation
pine_rma(x, y) =>
    alpha = y
    sum = 0.0
    sum := (x + (alpha - 1) * nz(sum[1])) / alpha

true_range() =>
    max(high - low, max(abs(high - close[1]), abs(low - close[1])))

//Long SL
plot(low - pine_rma(true_range() * multiplierPeriod, atrPeriod), "Long Stop", color=color.red, offset = 1)
// Short SL
plot(high +pine_rma(true_range() * multiplierPeriod, atrPeriod), "Short Stop", color=color.red, offset = 1)
strategy.exit("Exit","Long",limit=upper ,stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod)  )
strategy.exit("Exit","Short",limit=lower ,stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod)  )

/////////////////////new strategy
strategy.entry("Long",true,stop =upperbande  ,when = close <upperbande and  close[1] <upperbande and nopo )
strategy.close("Long",when = crossunder(close,upper) )//  and close <upperbande and close>lowerbande)

strategy.entry("Short",false,stop =lowerbande  ,when = close >lowerbande and close[1] >lowerbande and nopo )
strategy.close("Short",when = crossover(close, lower) )

strategy.exit("Exit","Long",stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod)  )
strategy.exit("Exit","Short",stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod)  )