AlphaTrend Adaptive ATR Kanal-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-11 14:27:54
Tags:

Die AlphaTrend-Strategie verwendet einen adaptiven ATR-Kanal, um die Kursentwicklungsrichtung zu erfassen und Trends auf der Grundlage von Kanal-Breakouts zu verfolgen. Insbesondere konstruiert sie einen dynamischen Kanal auf Basis von ATR, wobei das obere Band der niedrige minus ATR-Wert und das untere Band der hohe plus ATR-Wert ist.

Der ATR spiegelt die Marktvolatilität und -dynamik in Echtzeit wider. Der Kanal, der durch die oberen und unteren Bande gebildet wird, kann die Kursdynamik und -stärke messen. Breakouts signalisieren mögliche Trendumkehrungen oder -beschleunigungen und machen es sinnvoll, dem Trend zu folgen. Der Vorteil von AlphaTrend besteht darin, die Anpassungsfähigkeit des ATR zur Erfassung von Preisänderungen zu nutzen und gleichzeitig andere Indikatoren wie den RSI zu kombinieren, um die Trendrichtung zu bestimmen und die Eingangsgenauigkeit zu verbessern.

Allerdings müssen einige Probleme beachtet werden. ATR selbst hat Verzögerung Eigenschaften, die Einträge nach Trendumkehrungen verursachen kann. Auch nicht mit einem Stop-Loss führt zu großen Drawdowns. Schließlich müssen Parameter wie ATR Periode für verschiedene Produkte und Zeitrahmen zu optimieren.

Zusammenfassend kann man sagen, dass AlphaTrend einzigartige Stärken in der Identifizierung dynamischer Trendumkehrpunkte aufweist, aber für den Live-Handel ist immer noch ein strenges Risikomanagement erforderlich, einschließlich der Verwendung von Stops, Sizing-Positionen und Parameter-Tuning.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"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/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5

strategy("AlphaTrend Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100)
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=false)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])


K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))

plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))


longCondition = buySignalk
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = sellSignalk
if (shortCondition)
    strategy.entry("Short", strategy.short)
 

Mehr