Strategie für einen Mehrindikator-Entscheidungsträuß: IMACD, EMA und Ichimoku

Schriftsteller:ChaoZhang, Datum: 2024-01-22 11:25:56
Tags:

img

Übersicht

Diese Strategie integriert mehrere technische Indikatoren wie IMACD, EMA und Ichimoku, um ein umfassendes Entscheidungsbaummodell für die Erzeugung von Handelssignalen zu erstellen.

Strategie Logik

  1. IMACD: Erweiterter MACD, um Markttrends durch ImpulseMACD und ImpulseHisto besser zu erfassen
  2. Ichimoku: Grafikkonversionslinie, Basislinie, Spannweite A, Spannweite B zur Identifizierung von Unterstützungs- und Widerstandsniveaus
  3. EMA 40: Unterstützung bei der Bestimmung der Trendrichtung
  4. Lange/kurze Signale werden nach spezifischen Bedingungen zwischen IMACD, Cloud-Komponenten und EMA 40 ausgelöst

Langes Signal: Wenn IMACD eine bestimmte Farbe ist und EMA 40 über Wolkenoberfläche liegt, gehen Sie lang

Kurzsignal: Wenn der IMACD rot und der EMA 40 unterhalb des Wolkenbodens ist, gehen Sie kurz

Analyse der Vorteile

  1. Kombination mehrerer Indikatoren verbessert die Genauigkeit der Trendbeurteilung
  2. Eine klare Klassifizierung des Entscheidungsbaummodells erzeugt eindeutige Handelssignale
  3. Flexible EMA-Länge für eine bessere Unterstützung bei der Trendbestimmung
  4. Bessere Identifizierung von Unterstützungs- und Widerstandsniveaus mit Cloud- und Trendindikatoren

Risikoanalyse

  1. Komplexe Parameter-Tuning mit mehreren Indikatoren
  2. Falsche Signale können durch unsachgemäße EMA-Länge ausgelöst werden
  3. Schwierigkeiten bei der gleichzeitigen Überwachung mehrerer Indikatoren

Risikolösungen: Optimierung der Parameter-Einstellungen, Anpassung der EMA-Länge, Vereinfachung des Arbeitsablaufs.

Optimierungsrichtlinien

  1. Verbesserung der Stabilität durch Optimierung der Parameter
  2. Verlustbegrenzung mit Stop-Loss-Strategien
  3. Verbessern Sie die Signalqualität durch Backtesting mit riesigen Datenmengen
  4. Erstellen Sie ein adaptives Entscheidungsbaummodell mit maschinellem Lernen

Zusammenfassung

Diese Strategie identifiziert Trends mit Hilfe mehrerer Indikatoren, um ein Entscheidungsbaummodell für die Erzeugung von Handelssignalen zu konstruieren. Die Vorteile sind qualitativ hochwertige und genaue Signale. Es besteht Raum für eine progressive Optimierung.


/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Decision Tree Strategy: IMACD, EMA and Ichimoku [cryptoonchain]", overlay=true)

lengthMA = input(34, title="Length MA")
lengthSignal = input(9, title="Length Signal")
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(26, minval=1, title="Lagging Span")
emaLength = input(40, title="EMA Length")  // Added user-configurable EMA length

calc_smma(src, len) =>
    smma = float(na)
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

calc_zlema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    d = ema1 - ema2
    ema1 + d

src = ohlc4
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA)

md = (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? (src > hi ? color.rgb(128, 255, 0, 26) : color.green) : (src < lo ? color.red : color.orange)

colorCondition = color.rgb(128, 255, 0, 26)

conversionLine = math.avg(ta.lowest(conversionPeriods), ta.highest(conversionPeriods))
baseLine = math.avg(ta.lowest(basePeriods), ta.highest(basePeriods))
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = math.avg(ta.lowest(laggingSpan2Periods), ta.highest(laggingSpan2Periods))

// Use user-configurable length for EMA
ema40 = ta.ema(close, emaLength)

ebc = input(false, title="Enable bar colors")
barcolor(ebc ? mdc : na)

conversionLinePlot = plot(conversionLine, color=#2962FF, title="Conversion Line", display=display.none)
baseLinePlot = plot(baseLine, color=#B71C1C, title="Base Line", display=display.none)
laggingSpanPlot = plot(close, offset=-displacement + 1, color=#43A047, title="Lagging Span", display=display.none)
leadLine1Plot = plot(leadLine1, offset=displacement - 1, color=#A5D6A7, title="Leading Span A", display=display.none)
leadLine2Plot = plot(leadLine2, offset=displacement - 1, color=#EF9A9A, title="Leading Span B", display=display.none)
kumoCloudUpperLinePlot = plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Upper Line", display=display.none)
kumoCloudLowerLinePlot = plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Lower Line", display=display.none)
fill(kumoCloudUpperLinePlot, kumoCloudLowerLinePlot, color=leadLine1 > leadLine2 ? color.green : color.red)

a = (leadLine1 > leadLine2 ? leadLine1 : leadLine2) 
b = (leadLine1 < leadLine2 ? leadLine1 : leadLine2)  

if mdc == colorCondition and ema40 > a[displacement - 1]
    strategy.entry("Long", strategy.long)

if mdc == color.red and ema40 < b[displacement - 1]
    strategy.entry("Short", strategy.short)


Mehr