Trendfolgestrategie basierend auf gleitendem Durchschnitt und Supertrend


Erstellungsdatum: 2023-11-14 16:23:42 zuletzt geändert: 2023-11-14 16:23:42
Kopie: 0 Klicks: 733
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie basierend auf gleitendem Durchschnitt und Supertrend

Überblick

Diese Strategie kombiniert die Gleichgewichts- und Übertrend-Indikatoren und ermöglicht die Beobachtung von Trends.

Strategieprinzip

  1. Berechnung eines gewichteten Moving Averages MA. Die Gewichtung des Handelsvolumens wird verwendet, um den gewichteten Durchschnittspreis für einen bestimmten Zeitraum zu berechnen.

  2. Der Hull Moving Average wird auf Basis der MA berechnet. Hull Moving Averages sind empfindlicher auf Preisänderungen.

  3. Berechnung der Übertrend-Indikator. Der Übertrend-Indikator kombiniert mit dem ATR, um Veränderungen der Preisentwicklung zu erkennen. Berechnung der Auf- und Unterbahn.

  4. Wenn der Schlusskurs über die Oberbahn geht, machen Sie mehr; wenn der Schlusskurs unter die Unterbahn fällt, machen Sie leer.

  5. Graphisierung von Hilfsindikatoren wie Öffnungs- und Schlusspreise, Höchst- und Tiefstpreise, um die Preisentwicklung intuitiver zu beobachten.

  6. Sie können auch über eine Reihe von Indizern entscheiden, die auf dem Kauf- und Verkaufsprozess basieren.

Analyse der Stärken

  1. Diese Strategie kombiniert die mittlere und die übertrendige Indikatoren, um Trendänderungen genauer zu erfassen.

  2. Die Hull-Grenze ist empfindlicher auf Preisänderungen und hilft, Trendwechsel rechtzeitig zu erkennen.

  3. Der Supertrend-Indikator kann dynamisch nach oben oder unten angepasst werden, um den Marktschwankungen gerecht zu werden.

  4. Der Hilfsindikator zeigt die Preisentwicklung visuell an und kann in Kombination mit den Indikatoren beurteilt werden.

  5. Die Optimierung der Strategieparameter ist groß, und es können Parameter wie die Durchschnittslinie-Periode, die Übertrend-Multiplikation und andere angepasst werden.

Risikoanalyse

  1. In der Bilanz kann es zu falschen Signalen kommen, die zu unnötigen Transaktionen führen.

  2. Es sind mehrere Indikatoren gleichzeitig zu überwachen und die Strategie ist relativ kompliziert.

  3. Die Parameter müssen so angepasst werden, dass sie den Merkmalen der verschiedenen Sorten entsprechen.

  4. Es ist notwendig, die Stop-Loss-Kontrollen streng einzuhalten, um zu vermeiden, dass einzelne Verluste zu groß werden.

  5. Es ist möglich, dass die Anzahl der Transaktionen größer ist und die Auswirkungen der Gebühren zu kontrollieren sind.

Optimierungsrichtung

  1. Die Parameter für verschiedene Durchschnittslinien können getestet werden, wobei die für den Markt empfindlicheren Durchschnittsindikatoren ausgewählt werden.

  2. Verschiedene Hypertrend-Multiplikatoren können getestet werden, wobei die Werte ausgewählt werden, die die Trendänderungen zeitnah erfassen können.

  3. In Kombination mit einem Volatilitätsindikator kann die Position bei steigender Volatilität zurückgenommen werden.

  4. Es kann eine Durchbruchbedingung hinzugefügt werden, um falsche Signale bei der Berechnung zu vermeiden.

  5. Die Stop-Loss-Strategie kann optimiert werden, um die Stop-Loss-Strategie besser an die Markte anzupassen.

Zusammenfassen

Diese Strategie kombiniert gleichzeitig die Gleichgewichts- und Übertrend-Indikatoren, um die Richtung der Trends zu bestimmen und Trends zu verfolgen. Der Vorteil ist, dass die Indikatoren sich gegenseitig verifizieren können, um die Trends genauer zu bestimmen.

Strategiequellcode
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 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/
// © rajukpatel

//@version=5
strategy('My RK Strategy with Alert', shorttitle='My RK Strategy with Alert', overlay=true )
src5 = input(close)

tf = input(1440)
len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? tf / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7

ma = ta.ema(src5 * volume, len5) / ta.ema(volume, len5)


//script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/

src1 = ma

p(src1, len5) =>
    n = 0.0
    s = 0.0
    for i = 0 to len5 - 1 by 1
        w = (len5 - i) * len5
        n += w
        s += src5[i] * w
        s
    s / n

hm = 2.0 * p(src1, math.floor(len5 / 3)) - p(src1, len5)
vhma = p(hm, math.floor(math.sqrt(len5)))
lineColor = vhma > vhma[1] ? color.lime : color.red
plot(vhma, title='VHMA', color=lineColor, linewidth=3)
hColor = true
vis = true
hu = hColor ? vhma > vhma[2] ? #00ff00 : #ff0000 : #ff9800

vl = vhma[0]
ll = vhma[1]
m1 = plot(vl, color=hu, linewidth=1, transp=60)
m2 = plot(vis ? ll : na, color=hu, linewidth=2, transp=80)

fill(m1, m2, color=hu, transp=70)
//

b = timeframe.isintraday and timeframe.multiplier >= 1 ? 60 / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7



//
res5 = input.timeframe('D')

o = request.security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on)
c = request.security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on)
hz = request.security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on)
l = request.security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on)



col = c >= o ? color.lime : color.red

ppo = plot(b ? o >= c ? hz : l : o, color=col, title='Open', style=plot.style_stepline, transp=100)
ppc = plot(b ? o <= c ? hz : l : c, color=col, title='Close', style=plot.style_stepline, transp=100)

plot(b and hz > c ? hz : na, color=col, title='High', style=plot.style_circles, linewidth=2, transp=60)
plot(b and l < c ? l : na, color=col, title='Low', style=plot.style_circles, linewidth=2, transp=60)

fill(ppo, ppc, col, transp=90)

//
// INPUTS //
st_mult = input.float(1, title='SuperTrend Multiplier', minval=0, maxval=100, step=0.01)
st_period = input.int(50, title='SuperTrend Period', minval=1)

// CALCULATIONS //
up_lev = l - st_mult * ta.atr(st_period)
dn_lev = hz + st_mult * ta.atr(st_period)

up_trend = 0.0
up_trend := c[1] > up_trend[1] ? math.max(up_lev, up_trend[1]) : up_lev

down_trend = 0.0
down_trend := c[1] < down_trend[1] ? math.min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := c > down_trend[1] ? 1 : c < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend == 1 ? up_trend : down_trend

// Plotting
//plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy = ta.crossover(c, st_line)
sell = ta.crossunder(c, st_line)
signal = input(false)

/////////////// Plotting /////////////// 
plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.new(color.lime, 0))
plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.new(color.red, 0))


if buy
    strategy.entry('My Long Entry Id', strategy.long)

if sell
    strategy.entry('My Short Entry Id', strategy.short)