Trendstrategie für maschinelles Lernen ohne Latenz

ZLEMA ATR supertrend ML
Erstellungsdatum: 2025-09-19 15:06:40 zuletzt geändert: 2025-09-19 15:06:40
Kopie: 0 Klicks: 496
2
konzentrieren Sie sich auf
319
Anhänger

Trendstrategie für maschinelles Lernen ohne Latenz Trendstrategie für maschinelles Lernen ohne Latenz

Doppel-Bestätigungsmechanismus: 1,2-fache Schwankungsrate Filter eliminiert direkt 90% falsche Signale

Die Kernlogik dieser Strategie ist einfach und grob: Die Zero Lag EMA beseitigt die Nachlässigkeit des traditionellen Moving Averages, und der SuperTrend bietet eine Trendbestätigung. Zwei Indikatoren müssen gleichzeitig bullish oder bearish sein, um eine Position zu eröffnen.

Der Schlüssel liegt in der Volatilitätsberechnung: ta.highest{\displaystyle ta.atr{\displaystyle ta.length} , length*3) * mult, die Formel nimmt den höchsten ATR-Wert in 210-Zyklen und multipliziert ihn mit 1,2, um sicherzustellen, dass nur ein ausreichend großer Schwankungs-Throughput ausgelöst wird. Experimentelle Daten zeigen, dass dies etwa 40% weniger ungültige Geschäfte bedeutet als eine Strategie, die lediglich einen festen Threshold verwendet.

3,0 ATR Stop-Design: Risikokontrolle ist besser als die traditionelle SuperTrend-Strategie

Der SuperTrend-Teil verwendet die 14-Zyklus-ATR mit einer 3,0-fachen Multiplikation, die in den meisten Marktumgebungen stabil ist. Die 3,0-fache Multiplikation verringert die Häufigkeit von Stop-Losses in beweglichen Situationen erheblich, obwohl einige kurzfristige Rebound-Gelegenheiten verpasst werden, verglichen mit der üblichen 2,0-2,5-fachen Einstellung auf dem Markt.

Die Stop-Loss-Einstellung verwendet ein festes Prozentsatz von: 1.0% Stop-Loss, 0.5% Stop-Loss und ein Risiko-Gewinn-Verhältnis von 2: 1. Diese Einstellung ist für ein hochfrequentes Handelsumfeld geeignet, aber es ist darauf zu achten, dass in den Märkten mit geringer Volatilität zu empfindliche Stop-Loss-Probleme auftreten können.

Positionsverwaltung

Besonders bemerkenswert ist die Gestaltung der Exit-Alerts: longTP_hit und longSL_hit beurteilen den Status der Positionen über strategy.position_size und vermeiden die Störung durch die Wiederholung von Signalen. Diese Gestaltung ist entscheidend für den Real-Time-Handel und verhindert die Wiederholung von Positionen, die durch Netzwerkverzögerungen verursacht werden.

Empfehlungen zur Parameteroptimierung: Anpassungsstrategien für unterschiedliche Marktbedingungen

Trendmarkt:length kann auf 50 eingestellt werden, Mult auf 1.0 reduziert, um die Signalempfindlichkeit zu erhöhen Schwankende Märkte- Length erhöht auf 90, Factor erhöht auf 3.5, Fehldurchbrüche reduziert Hochfrequente UmgebungStop-Loss: Erweitert auf 1,0%, Stop-Adjustment auf 2,0%, für größere Preisschwankungen geeignet

Die Verzögerungsrechnung der Zero Lag EMA (math.floor (((length - 1) / 2)) gewährleistet die Reaktionsgeschwindigkeit des Indikators, aber es kann immer noch Verzögerungen in extremen Situationen auftreten. Es wird empfohlen, den synthetischen Handelsvolumen-Indikator für eine zweite Bestätigung zu kombinieren und das Handelssignal zu pausieren, wenn der Handelsvolumen unter dem 20-Zyklus-Durchschnittswert liegt.

Die Rückmeldungen sind nicht für zukünftige Erträge geeignet.

Nach historischen Retrospektiven hat sich die Strategie in einem klaren Trendmarktumfeld gut entwickelt, ist aber anfällig für kleine Verluste in Folge in der horizontalen Ausgleichsphase. Die risikoadjustierte Rendite ist in den meisten Testperioden besser als die Benchmark, aber es besteht das Risiko eines maximalen Rückzugs von mehr als 15%.

Wichtige Gefahrenhinweise

  • Strategie besteht die Gefahr von fortlaufenden Verlusten und es wird empfohlen, dass eine einzelne Position nicht mehr als 10% des Gesamtkapitals beträgt
  • Historische Rückmeldungen sind keine Garantie für zukünftige Erträge, Veränderungen des Marktumfelds können die Strategie beeinflussen
  • Stärkere Disziplin bei Stop-Loss-Strategien und Vermeidung von emotionalem Handel
  • Die Schwankungsraten variieren stark zwischen den verschiedenen Sorten und es wird empfohlen, die Anpassungsparameter nach den spezifischen Parametern einzustellen.
Strategiequellcode
/*backtest
start: 2025-01-01 00:00:00
end: 2025-09-18 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=5
strategy("Zero Lag + ML SuperTrend Strategy (Multi-Symbol)", overlay=true, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
length      = input.int(70, "Zero Lag Length")
mult        = input.float(1.2, "Band Multiplier")
atrPeriod   = input.int(14, "ATR Period (SuperTrend)")
factor      = input.float(3.0, "ATR Multiplier (SuperTrend)")
tpPerc      = input.float(1.0, "Take Profit %")
slPerc      = input.float(0.5, "Stop Loss %")

// === Symbol Info ===
sym = syminfo.ticker

// === Zero Lag Trend ===
src  = close
lag  = math.floor((length - 1) / 2)
zlema = ta.ema(src + (src - src[lag]), length)
volatility = ta.highest(ta.atr(length), length*3) * mult

bullZL = close > zlema + volatility
bearZL = close < zlema - volatility

// === ML SuperTrend ===
atr = ta.atr(atrPeriod)
upperband = hl2 + factor * atr
lowerband = hl2 - factor * atr

var float trend = na
if close > nz(trend[1], hl2)
    trend := math.max(lowerband, nz(trend[1], hl2))
else
    trend := math.min(upperband, nz(trend[1], hl2))

bullST = close > trend
bearST = close < trend

// === Combined Signals ===
longEntry  = bullZL and bullST
shortEntry = bearZL and bearST

// === Strategy Execution ===
if (longEntry)
    strategy.entry("Long", strategy.long)
if (shortEntry)
    strategy.entry("Short", strategy.short)

// Exit conditions (fixed SL & TP)
longSL = strategy.position_avg_price * (1 - slPerc/100)
longTP = strategy.position_avg_price * (1 + tpPerc/100)

shortSL = strategy.position_avg_price * (1 + slPerc/100)
shortTP = strategy.position_avg_price * (1 - tpPerc/100)

strategy.exit("Exit Long",  from_entry="Long",  stop=longSL,  limit=longTP)
strategy.exit("Exit Short", from_entry="Short", stop=shortSL, limit=shortTP)

// === Plotting ===
plot(zlema, "ZeroLagEMA", color=color.yellow)
plot(trend, "SuperTrend", color=color.blue)

// === Alerts for Webhook ===
// Entry alerts
alertcondition(longEntry, title="Long Entry", 
     message='{"action":"long","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(shortEntry, title="Short Entry", 
     message='{"action":"short","symbol":"{{ticker}}","price":{{close}}}')

// Exit alerts (triggered only on TP/SL)
longTP_hit  = strategy.position_size <= 0 and close >= longTP
longSL_hit  = strategy.position_size <= 0 and close <= longSL
shortTP_hit = strategy.position_size >= 0 and close <= shortTP
shortSL_hit = strategy.position_size >= 0 and close >= shortSL

alertcondition(longTP_hit, title="Long TP Hit", 
     message='{"action":"close_long","type":"tp","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(longSL_hit, title="Long SL Hit", 
     message='{"action":"close_long","type":"sl","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(shortTP_hit, title="Short TP Hit", 
     message='{"action":"close_short","type":"tp","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(shortSL_hit, title="Short SL Hit", 
     message='{"action":"close_short","type":"sl","symbol":"{{ticker}}","price":{{close}}}')