Diese Strategie kombiniert langsame Heiken Ashi und exponentielle gleitende Durchschnitte, um Trends zu identifizieren und lange/kurze Trades während trending Markets zu machen.
Die Strategie setzt folgende Indikatoren ein:
Slow Heiken Ashi: Eine spezielle Art von Leuchter, der anhand des vorherigen Durchschnittspreises der Bar berechnet wird, der Marktlärm filtert und Trends identifiziert.
Exponentieller gleitender Durchschnitt: Glättete Preisdurchschnitte mit exponentieller Gewichtung.
Die spezifische Handelslogik lautet:
Gehen Sie lang, wenn der Preis über die 100-Tage-EMA geht, gehen Sie kurz, wenn der Preis unter die 100-Tage-EMA geht.
Ausgangspositionen, wenn der offene Kurs von Heiken Ashi
Die Strategie kombiniert Trend- und Umkehrsignale, um große Kursschwankungen während der Trendmärkte zu erfassen und gleichzeitig übermäßige Verluste bei Umkehrtrends zu vermeiden.
Die EMA bestimmt die allgemeine Markttrendrichtung und verhindert Ablenkungen durch lokale Schwankungen.
Heiken Ashi Crossovers ermöglichen eine frühzeitige Erkennung potenzieller Umkehrungen.
Adaptiver KAMA-Filter reduziert falsche Signale.
Plötzliche, große EMA-Brechungen können zu verstärkten Verlusten führen.
Umkehrsignale können sich verzögern.
Eine unzureichende EMA-Parametrierung wirkt sich negativ auf die Leistung aus.
Zusätzliche Indikatoren wie MACD und Bollinger-Bänder einbeziehen, um gleichzeitige EMA/Heiken-Ashi-Fehler zu vermeiden.
Dynamische Optimierung der EMA-Parameter auf der Grundlage der Marktvolatilität, entsprechend eine Verschärfung der Stopps/Erhöhung der Schlupf Toleranz.
Nutzen Sie maschinelles Lernen, um Parameter, Filterregeln und Robustheit automatisch einzustellen.
Die Strategie ist relativ einfach und praktisch insgesamt, kombiniert sowohl Trend- als auch Umkehrelemente. Mit gut abgestimmten Parametern und Risikokontrollen behält sie ein anständiges Gewinnpotenzial. Weitere Verbesserungen können auf den Optimierungsrichtungen aufbauen, um die Strategie anpassungsfähiger zu machen.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-19 10:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("NoScoobies Slow Heiken Ashi and Exponential Moving average Strategy 2.2", overlay=true) //SHA p=input(6,title='Period') fastend=input(0.666,step=0.001) slowend=input(0.0645,step=0.0001) kama(close,amaLength)=> diff=abs(close[0]-close[1]) signal=abs(close-close[amaLength]) noise=sum(diff, amaLength) efratio=noise!=0 ? signal/noise : 1 smooth=pow(efratio*(fastend-slowend)+slowend,2) kama=nz(kama[1], close)+smooth*(close-nz(kama[1], close)) kama hakamaper=1 Om=sma(open,p) Hm=sma(high,p) Lm=sma(low,p) Cm=sma(close,p) vClose=(Om+Hm+Lm+Cm)/4 vOpen= kama(vClose[1],hakamaper) vHigh= max(Hm,max(vClose, vOpen)) vLow= min(Lm,min(vClose, vOpen)) asize=vOpen-vClose size=abs(asize) //MMAR exponential = input(true, title="Exponential MA") src = close ma05 = exponential ? ema(src, 05) : sma(src, 05) ma10 = exponential ? ema(src, 10) : sma(src, 10) ma15 = exponential ? ema(src, 15) : sma(src, 15) ma20 = exponential ? ema(src, 20) : sma(src, 20) ma25 = exponential ? ema(src, 25) : sma(src, 25) ma30 = exponential ? ema(src, 30) : sma(src, 30) ma35 = exponential ? ema(src, 35) : sma(src, 35) ma40 = exponential ? ema(src, 40) : sma(src, 40) ma45 = exponential ? ema(src, 45) : sma(src, 45) ma50 = exponential ? ema(src, 50) : sma(src, 50) ma55 = exponential ? ema(src, 55) : sma(src, 55) ma60 = exponential ? ema(src, 60) : sma(src, 60) ma65 = exponential ? ema(src, 65) : sma(src, 65) ma70 = exponential ? ema(src, 70) : sma(src, 70) ma75 = exponential ? ema(src, 75) : sma(src, 75) ma80 = exponential ? ema(src, 80) : sma(src, 80) ma85 = exponential ? ema(src, 85) : sma(src, 85) ma90 = exponential ? ema(src, 90) : sma(src, 90) ma95 = exponential ? ema(src, 95) : sma(src, 95) ma100 = exponential ? ema(src, 100) : sma(src, 100) longcondition=src>ma100 shortcondition=src<ma100 long=longcondition and size<size[1] and (vOpen<vClose or vOpen>vClose) short=shortcondition and size<size[1] and (vOpen>vClose or vOpen<vClose) close_long=longcondition and crossunder(open, vClose) close_short=shortcondition and crossover(open, vClose) _close=close_long[2] or close_short[2] if long strategy.entry("LONG", strategy.long) strategy.close("LONG", when = _close) if short strategy.entry("SHORT", strategy.short) strategy.close("SHORT", when = _close)