Trendfolgestrategie basierend auf dynamischem gleitendem Durchschnitt


Erstellungsdatum: 2024-01-02 10:44:53 zuletzt geändert: 2024-01-02 10:44:53
Kopie: 0 Klicks: 559
1
konzentrieren Sie sich auf
1621
Anhänger

Trendfolgestrategie basierend auf dynamischem gleitendem Durchschnitt

Überblick

Diese Strategie basiert auf dynamischen Gleichgewichtsindikatoren, um die Preisentwicklung in Echtzeit zu verfolgen und Handelssignale durch Durchbruch der Gleichgewichtslinie zu senden. Die Strategie hat den Vorteil, dass die Parameter einfach eingestellt und die Signale klar beurteilt werden können.

Strategieprinzip

Die Strategie verwendet dynamische Gleichgewichtsindikatoren, darunter verschiedene Arten von Gleichgewichten wie ALMA, EMA und SMA. Die Grundprinzip ist, wenn der Preis die Durchschnittlinie überschreitet, zu tun; wenn der Preis die Durchschnittlinie unterschreitet, zu machen.

Konkret verwendet die Strategie die mittlere Linie, die den hohen und niedrigen Punkt bildet, und verwendet dann die niedrige und mittlere Linie als Multi-Signal-Linie und die hohe und mittlere Linie als Short-Signal-Linie. Wenn der Schlusskurs höher ist als der niedrige und mittlere Linie, macht man mehr; wenn der Schlusskurs niedriger ist als der hohe und mittlere Linie, macht man short.

Der Trendbeobachter kann die Trendbewegung anhand eines Gleichgewichtsindikators bestimmen und in Kombination mit dem Breakout-Prinzip ein Signal erzeugen, um eine einfache und praktische Trendbeobachtungsstrategie zu bilden.

Strategische Vorteile

  • Mit mittlerer Linienmessung, einfache Parameter-Einstellung und einfache Bedienung
  • Die Signal-Regel ist klar und erzeugt keine falschen Signale.
  • Frei wählbarer, einheitlich-linearer Algorithmus, der flexibel auf Marktveränderungen reagiert
  • Anpassbare Durchschnittsparameter, die sich an die Trends unterschiedlicher Perioden anpassen
  • Signalüberprüfbarkeit über mehrere Zeitrahmen, um die Zuverlässigkeit zu erhöhen

Risiken und Lösungen

  • Der Durchschnittsindikator lag zurück und könnte einige Chancen verpassen.
    • Verkürzung der Durchschnittsphase oder Verwendung eines Index-Moving Average EMAs
  • Große kurzfristige Erschütterungen, Risiko für einen Stillstand
    • Entspannung der Stop-Loss-Marge, um ausreichend Bewegungsfreiheit zu gewährleisten
  • Langfristige Risiken, die möglicherweise nicht rechtzeitig eingestellt werden können
    • In Kombination mit anderen Indikatoren vermeidet man die Suche nach Höhen und Tiefen.

Strategieoptimierung

  • Anpassung der Mittellinien-Algorithmen und Parameter an die Merkmale der verschiedenen Sorten
  • Mehr Beurteilungen über die Nebenindikatoren, um die Wirksamkeit der Strategie zu verbessern
  • Erhöhung der Schadensbegrenzungsmechanismen
  • Bewertung der Signalzuverlässigkeit über mehrere Zeitrahmen
  • Die Suche nach besseren Parametern in Kombination mit maschinellem Lernen

Zusammenfassen

Die Strategie nutzt Gleichgewichtsindikatoren, um die Richtung der Preisentwicklung zu bestimmen, und sendet Handelssignale auf Basis der Durchbruchstheorie aus. Die Vorteile sind einfach und leicht zu bedienen, geeignet für mittlere und lange Positionen, die durch Parameter an Marktveränderungen angepasst werden können.

Strategiequellcode
/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)

//INPUTS
mat =               input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline =          input(55, title="MA Length")
src =               input(ohlc4, title="Closing Source")

offset =            input(0.85, step=0.05, title="Offset (alma only)")
sigma =             input(10, title="Sigma (alma only)")

useCurrentRes =     input(true, title="Use Current Resolution")
resCustom =         input("1440", title="Timeframe")

showsignals =       input(false, title="Show Signals ?")

//BASELINE
baselinehigh = 

 mat=="SMA" ? sma(high,baseline) : 
 mat=="EMA" ? ema(high,baseline) : 
 mat=="WMA" ? wma(high,baseline) : 
 mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(high,baseline) : 
 mat=="RMA" ? rma(high,baseline) :
 mat=="ALMA" ? alma(high, baseline, offset, sigma) : na

baselinelow = 

 mat=="SMA" ? sma(low,baseline) : 
 mat=="EMA" ? ema(low,baseline) : 
 mat=="WMA" ? wma(low,baseline) : 
 mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(low,baseline) : 
 mat=="RMA" ? rma(low,baseline) : 
 mat=="ALMA" ? alma(low, baseline, offset, sigma) : na

//RESOLUTION
res =               useCurrentRes ? timeframe.period : resCustom

mtfhigh =           security(syminfo.tickerid, res, baselinehigh)
mtflow =            security(syminfo.tickerid, res, baselinelow)

//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")

long =              src > mtfhigh
short =             src < mtflow

barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")

signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])

plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)

alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")

if (long)
    strategy.entry("Long", strategy.long)
if (short)
    strategy.entry("Short", strategy.short)