Handelsstrategie für mehrere Zeitrahmen bewegliche Durchschnittswerte

Schriftsteller:ChaoZhang, Datum: 21.09.2023
Tags:

Übersicht

Diese Strategie verwendet gleitende Durchschnittsüberschreitungen zwischen verschiedenen Zeitrahmen, um Handelssignale zu generieren.

Strategie Logik

Die Strategie verwendet zwei gleitende Durchschnitte, die auf getrennte Zeitrahmen berechnet werden.

Zum Beispiel wird auf dem 15-min-Diagramm 20MA und 50MA verwendet:

  • 20 MA wird auf Stromstangen von 15 min berechnet.
  • 50 MA wird auf Tagesstangen berechnet

Wenn 15min 20MA über 50MA pro Tag geht, geht es lang.

Dies führt dazu, dass für den laufenden Zeitraum langfristige Trends beobachtet werden.

Übergangspunkte können für klare Handelssignale markiert werden.

Vorteile

  • Über Zeiträume hinweg analysieren, größere Trends entdecken
  • Höhere TF-Leitungen stabiler und vermeiden falsche Signale
  • Die unteren TF-Linien sind empfindlicher, der Fangtrend ändert sich schnell
  • Anpassungsfähige Kombinationen von MA-Perioden
  • Klar markierte Signale auf der Karte

Risiken

  • Erhöhte Komplexität bei mehreren Zeitrahmen
  • Niedrigere TF-Falschsignale noch möglich
  • Allgemeine Verzögerung bei den MA-Systemen, möglicherweise fehlen die besten Einträge
  • Begrenzte Filterung mit reinem MA-System
  • Für verschiedene Produkte notwendige Periodenabstimmung

Die Risiken können verringert werden, indem

  • Aufrechterhaltung längerer hoher TF-MAs für eine robuste Trendrichtung
  • Hinzufügen weiterer Indikatoren zur weiteren Signalfilterung
  • Optimierung der MA-Perioden für die besten Kombinationen
  • Entspannende Einstiegsregeln wie das Hinzufügen von Kerzenmustern

Anweisungen zur Verbesserung

Die Strategie kann verbessert werden, indem

  1. Testen von mehr MA-Periodenkombinationen zur Optimierung

  2. Hinzufügen einer sekundären Bestätigung, wenn ein Crossover stattfindet

    z. B. MACD-Impuls überprüfen

  3. Optimierung der Haltestellen, um einen vorzeitigen Ausstieg zu vermeiden

    Betrachten Sie Post123 als Beweis, um die Ausgänge zu entscheiden.

  4. Unterschiedliche Filter für kurze und lange TF

    Strenger für kurze TF, entspannter für lange TF

  5. Betrachten Sie verschiedene Parametermengen für verschiedene Sitzungen

    Die Marktbedingungen variieren je nach Sitzung

Zusammenfassung

Diese Strategie beobachtet Kreuzungen zwischen MAs von mehreren Zeitrahmen, um die Trendrichtung zu bestimmen und größere Trends aufzudecken. Dies filtert kurzfristige Geräusche aus und konzentriert sich auf größere Preisbewegungen. Es gibt jedoch Herausforderungen wie Zeitrahmen-Tuning und verzögerte Signale. Verbesserungen können durch strenges Backtesting und Optimierung für robuste Parameter, Hinzufügen von Filtern zur Bestätigung, Live-Validierung für kontinuierliche Verbesserungen gemäß dem Marktfeedback erzielt werden.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 7d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

//Run script on a long interval gives better result for e.g. 1 Day
//Plots The Majority of Moving Averages
//Defaults to Current Chart Time Frame --- But Can Be Changed to Higher Or Lower Time Frames
//2nd MA Capability with Show Crosses Feature
//study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true)
strategy("Stratergy CM_Ultimate_MA_MTF", shorttitle = "Stratergy CM_Ultimate_MA_MTF", overlay = true) 
//,default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//inputs
src = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above",  defval="D")
len = input(20, title="Moving Average Length - LookBack Period")
atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")
cc = input(true,title="Change Color Based On Direction?")
smoothe = input(2, minval=1, maxval=10, title="Color Smoothing - 1 = No Smoothing")
doma2 = input(false, title="Optional 2nd Moving Average")
len2 = input(50, title="Moving Average Length - Optional 2nd MA")
atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")
cc2 = input(true,title="Change Color Based On Direction 2nd MA?")
warn = input(false, title="***You Can Turn On The Show Dots Parameter Below Without Plotting 2nd MA to See Crosses***")
warn2 = input(false, title="***If Using Cross Feature W/O Plotting 2ndMA - Make Sure 2ndMA Parameters are Set Correctly***")
sd = input(false, title="Show Dots on Cross of Both MA's")


res = useCurrentRes ? timeframe.period : resCustom
//hull ma definition
hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
//TEMA definition
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
tema = 3 * (ema1 - ema2) + ema3

avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : tema
//2nd Ma - hull ma definition
hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2)))
//2nd MA TEMA definition
sema1 = ema(src, len2)
sema2 = ema(sema1, len2)
sema3 = ema(sema2, len2)
stema = 3 * (sema1 - sema2) + sema3

avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src, len2) : atype2 == 6 ? rma(src,len2) : tema

out = avg 
out_two = avg2

out1 = security(syminfo.tickerid, res, out)
out2 = security(syminfo.tickerid, res, out_two)

ma_up = out1 >= out1[smoothe]
ma_down = out1 < out1[smoothe]

col = cc ? ma_up ? lime : ma_down ? red : aqua : aqua
col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua

circleYPosition = out2
chk=col==red?1:0

if (not na(chk))
    if (chk[1]==1 and chk==0)
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    else
        strategy.exit("RsiLE")

    if (chk[1]==0 and chk==1)
        strategy.entry("RsiSE", strategy.short, comment="RsiLE")
    else
        strategy.exit("RsiSE")
        
plot(out1, title="Multi-Timeframe Moving Avg", style=line, linewidth=4, color = col)
plot(doma2 and out2 ? out2 : na, title="2nd Multi-TimeFrame Moving Average", style=circles, linewidth=4, color=col2)
plot(sd and cross(out1, out2) ? circleYPosition : na,style=cross, linewidth=5, color=yellow)



Mehr