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.
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.
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)