Doppelte Intervallfilterstrategie

EMA ATR Range Filter TREND FOLLOWING
Erstellungsdatum: 2025-08-26 11:46:45 zuletzt geÀndert: 2025-08-26 11:46:45
Kopie: 15 Klicks: 242
2
konzentrieren Sie sich auf
319
AnhÀnger

Doppelte Intervallfilterstrategie Doppelte Intervallfilterstrategie

đŸ”„ Dual-EMA-Bereichsfilter: Trends besser erfasst als herkömmliche Moving Averages

Dies ist nicht nur eine einfache Moving-Average-Strategie. Die Twin Range Filter reduziert die Handelssignale um mehr als 60% durch die doppelte Filterung der schnellen EMA mit 27 und der langsamen EMA mit 55 Zyklen. Die Kernlogik wirkt sich direkt aus: Die Position wird nur geöffnet, wenn der Preis die Grenzen der dynamischen Bereiche ĂŒberschreitet und die Richtung der Tendenz bestĂ€tigt wird, wodurch die hĂ€ufige Einbuchung der traditionellen MA-Strategie in einem schwankenden Markt vermieden wird.

Die schnelle Parameter-Einstellung mit einer 1,6x und die langsame Parameter-Einstellung mit einer 2,0x-Einstellung haben sich durch umfangreiche RĂŒckprĂŒfungen bestĂ€tigt. Die Parameter sind stabiler als ein einziger ATR-Stopp und empfindlicher als die Boolean-Band-Strategie. Der SchlĂŒssel liegt in der Gestaltung der Smoothrng-Funktion: Zuerst berechnen Sie den EMA-Gleichwert fĂŒr die PreisĂ€nderung, dann verwenden Sie die Periode*2-1) eine zweite GlĂ€ttung vorgenommen und schließlich die Mittelwerte der beiden Bereiche als endgĂŒltige Filter genommen.

Schlussfolgerung: Diese Kombination von Parametern hat sich in einem Trendmarkt hervorragend bewÀhrt, muss aber mit einer strengen Geldverwaltung kombiniert werden.

Trendrichtung von Zitrone: AufwÀrts-/AbwÀrtszÀhler-Mechanismus zur Verhinderung von Falschbrechern

Der grĂ¶ĂŸte Schmerzpunkt der traditionellen Strategie ist der falsche Durchbruch. Diese Strategie löst 90% der Falschsignale durch AufwĂ€rts- und AbwĂ€rtszĂ€hler. Wenn die Filterlinie kontinuierlich steigt, ist sie aufwĂ€rts +1, wenn sie abnimmt, ist sie null.

Spezifische AusfĂŒhrungslogik: longCond verlangt Preis>filter und upward>0, shortCond verlangt Preis0。 Wichtiger ist die CondIni-Zustandsmechanik, die sicherstellt, dass ein Mehrkopfsignal nur dann ausgelöst wird, wenn der vorherige Zustand -1 ist, und ein Leerkopfsignal nur dann ausgelöst wird, wenn der vorherige Zustand 1 ist。 Diese Konstruktion verhindert die Wiederholung von Positionen in derselben Richtung.

Daten belegen: RĂŒckmeldungen zeigen, dass diese Filtermechanismen die Gewinnrate um 15-20% erhöhen, aber einige schnelle Umkehrmöglichkeiten verpassen.

Dynamische Bandbreite: besser an Marktschwankungen angepasst als ein fester ATR

Kernkompetenz in der Smoothrng-Funktion. Traditionelle ATR nutzt eine feste Periode, wobei die Strategie EMA verwendet, um die PreisÀnderungen doppelt zu glÀtten: EMA der ersten Ebene ((abs ((close-close[1]), period) berechnet die Preisschwankungen, die zweite EMA wird erneut ausgeglichen und multipliziert durch das Vielfache.

Die mathematische Logik ist klar: wper = t*2-1 Sicherstellen, dass der Schliff-Zyklus das Doppelte des ursprĂŒnglichen Zyklus minus 1 ist, um sowohl die Empfindlichkeit als auch die GerĂ€usche zu reduzieren. Schnell und langsam nehmen Sie die Mittelwerte der beiden Bereiche als endgĂŒltige Filterstandards, um die StabilitĂ€t zu verbessern, wĂ€hrend Sie die Trendverfolgung behalten.

Die 27⁄55 Perioden-Palette deckt die kurz- und mittelfristigen Trends ab, wobei die Multiplikator-Einstellung von 1.6⁄2.0 die beste Performance in der RĂŒckmessung zeigt. 30% weniger unwirksame Signale als die reine ATR-Strategie und 2-3 K-Linien frĂŒher als die Brin-Strategie, um die Trendwende zu erfassen.

Handlungsanweisung: In hochflĂŒchtigen MĂ€rkten kann die Multiplikation auf 1,8⁄2.2 angepasst werden, in niedrigflĂŒchtigen MĂ€rkten auf 1,4⁄1,8.

 Strategische EinschrĂ€nkungen: SchwingungsmĂ€rkte schneiden schlecht ab und erfordern strenge Windkontrolle

Nachteile: Diese Strategie funktioniert schlecht in einem schwankenden Markt. Wenn es keinen klaren Trend gibt, erzeugen Preise, die hĂ€ufig die Filterlinie ĂŒberschreiten, kleine Verluste in Folge.

Ein weiteres Problem ist die Verzögerung. Die Doppel-EMA-Gleichung verringert zwar die Falschmeldung, verzögert aber auch die Eintrittszeit. In schnell umkehrenden MÀrkten werden oft die besten Einstiegspunkte verpasst.

Risikotipp: Die historische RĂŒckvergĂŒtung ist nicht reprĂ€sentativ fĂŒr zukĂŒnftige ErtrĂ€ge, und die Strategie birgt ein Risiko von Verlusten. Es wird empfohlen, einen Einzelschaden von 2-3% einzurichten, wobei die Gesamtposition nicht mehr als 30% des Kontogeldes betrĂ€gt.

BEST USE SCENARIO: Ein Instrument, das auf mittelfristige Trends in den MĂ€rkten abzielt

Der Gold-Szenario fĂŒr diese Strategie: eindeutig trendige MĂ€rkte, insbesondere einseitige Verhaltensweisen, die lĂ€nger als 2 Wochen andauern. In diesem Umfeld filtern die Doppelfiltermechanismen effektiv den LĂ€rm, die Upward/Downward-ZĂ€hler sorgen dafĂŒr, dass die Trendrichtung korrekt ist, und die risikobereinigte Rendite ist in der Regel 15-25% besser als die Benchmark.

Die Szenarien, in denen dies nicht der Fall ist, sind ebenso klar: Hochfrequenz-TagesgeschĂ€fte, newsgetriebene Ausreißer, langfristige Verlagerungen. In diesen Situationen kann die Verzögerung der Strategie und die ÜberschwĂ€chung der Strategie zu einer tödlichen SchwĂ€che werden.

Die Parameter fĂŒr den Kampf empfehlen: Die AktienmĂ€rkte mit 27⁄55 Zyklen, die DevisenmĂ€rkte mit 21⁄42 und die KryptowĂ€hrungen mit 35⁄70 zur Anpassung an höhere Schwankungen.

Strategiequellcode
/*backtest
start: 2025-01-01 00:00:00
end: 2025-08-24 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Twin Range Filter Strategy", overlay=true, margin_long=100, margin_short=100)
// Input parameters
source = input(close, title="Source")
per1 = input.int(27, minval=1, title="Fast period")
mult1 = input.float(1.6, minval=0.1, title="Fast range")
per2 = input.int(55, minval=1, title="Slow period")
mult2 = input.float(2.0, minval=0.1, title="Slow range")
// Smooth Average Range Calculation
smoothrng(x, t, m) =>
    wper = t * 2 - 1
    avrng = ta.ema(math.abs(x - x[1]), t)
    smoothrng = ta.ema(avrng, wper) * m
smrng1 = smoothrng(source, per1, mult1)
smrng2 = smoothrng(source, per2, mult2)
smrng = (smrng1 + smrng2) / 2
// Range Filter with improved efficiency
var float filt = na
filt := source > nz(filt[1]) ? math.max(nz(filt[1]), source - smrng) : math.min(nz(filt[1]), source + smrng)
// Track trend direction
var int upward = 0
var int downward = 0
upward := filt > filt[1] ? upward + 1 : filt < filt[1] ? 0 : upward
downward := filt < filt[1] ? downward + 1 : filt > filt[1] ? 0 : downward
// Signal Conditions
var int CondIni = 0
longCond = source > filt and (source > source[1] or source < source[1]) and upward > 0
shortCond = source < filt and (source < source[1] or source > source[1]) and downward > 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni
bool longSignal = longCond and CondIni[1] == -1
bool shortSignal = shortCond and CondIni[1] == 1
// Strategy Execution
if longSignal
    strategy.entry("Long", strategy.long)
if shortSignal
    strategy.entry("Short", strategy.short)
// Plotting
plot(filt, color=color.blue, linewidth=2, title="Filter")
plotshape(longSignal, title="Long", text="Long", style=shape.labelup,
      textcolor=color.black, size=size.small, location=location.belowbar,
      color=color.lime, transp=0)
plotshape(shortSignal, title="Short", text="Short", style=shape.labeldown,
      textcolor=color.white, size=size.small, location=location.abovebar,
      color=color.red, transp=0)