Trend nach Strategie auf Basis eines dynamischen gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2024-01-02 10:44:53
Tags:

img

Übersicht

Diese Strategie basiert auf dem dynamischen gleitenden Durchschnittsindikator, um den Kurstrend in Echtzeit zu verfolgen und Handelssignale zu generieren, wenn der gleitende Durchschnittswert durchbrochen wird.

Strategie Logik

Diese Strategie nutzt dynamische gleitende Durchschnittsindikatoren, einschließlich ALMA, EMA, SMA und mehr. Das Prinzip ist, lang zu gehen, wenn der Preis über den gleitenden Durchschnitt bricht und kurz zu gehen, wenn er darunter bricht. Das heißt, der gleitende Durchschnitt dient als Barometer für den Preistrend und Signale können generiert werden, wenn eine Trendumkehr auftritt.

Die Strategie verwendet schwebende Durchschnitte, die durch hohe und niedrige Preise gebildet werden. Der niedrige Preis MA dient als Signallinie für lange Signale, während der hohe Preis MA als Short-Linie dient. Wenn der Schlusskurs über den niedrigen Preis MA steigt, gehen Sie lang. Wenn der Schlusskurs unter den hohen Preis MA fällt, gehen Sie kurz.

Durch die Beurteilung der Kursentwicklung mit MA und die Kombination mit dem Breakout-Prinzip zur Erzeugung von Signalen wird eine einfache und praktische Trendfolgestrategie gebildet.

Vorteile

  • Einfache Parametereinstellungen mit MA-Anzeiger, einfach zu bedienen
  • Klare Signalregeln ohne falsche Signale
  • Flexible Genehmigungsarten zur Anpassung an Marktveränderungen
  • Anpassungsfähige MA-Perioden für verschiedene Trendzyklen
  • Mehrzeitrahmenvalidierung verbessert die Zuverlässigkeit

Risiken und Lösungen

  • MA-Verzögerung kann einige Chancen verpassen
    • Verkürzung der MA-Periode oder Verwendung der EMA
  • Große kurzfristige Swingrisiken
    • Erweitern Sie die Flexibilität des Stop-Loss-Rahmens
  • Langfristige Risiken, die nicht in der Lage sind, den Gewinn rechtzeitig zu erzielen
    • Kombinieren Sie andere Indikatoren, vermeiden Sie Höchststände und töten Sie Tiefstände

Optimierungsrichtlinien

  • Anpassung des Zulassungstyps und der Parameter anhand der Symbolmerkmale
  • Hinzufügen von Hilfsindikatoren zur Verbesserung der Strategie
  • Hinzufügen von Stop-Loss- und Take-Profit-Mechanismen
  • Bewertung der Signalzuverlässigkeit über Zeitrahmen hinweg
  • Nutzen Sie maschinelles Lernen, um bessere Parameter zu finden

Schlussfolgerung

Diese Strategie beurteilt die Trendrichtung mit MA und erzeugt Signale basierend auf den Ausbruchprinzipien. Sie ist einfach zu bedienen und eignet sich für mittelfristige bis langfristige Haltungen. Die Parameter können auch an Marktveränderungen angepasst werden. Risiken aus kurzfristigen Schwankungen und langfristigen Haltungen müssen mit Stop-Loss/Profit-Taking verwaltet werden. Es gibt Verbesserungsmöglichkeiten, indem mehr Indikatoren integriert und durch maschinelles Lernen optimale Parameter gefunden werden.


/*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)

Mehr