
EMA, MACD, RSI, CVD, ATR
Traditionelle Umkehrstrategien sehen nur ein oder zwei Indikatoren an. Das ist Glücksspiel. Diese Strategie erfordert die gleichzeitige Bestätigung von EMA-Trendhintergrund, MACD-Dynamikumstellung, RSI-Überkauf-Überverkauf und Orderflow-Analyse.
Nicht jede Umkehrung ist ein Handel wert, nur eine vierfach bestätigte Umkehrung ist echtes Gold und Silber.
Die Kerninnovation der Strategie besteht in der Kombination von RSI-Abweichung und CVD-Analyse. Wenn der Preis niedrig innovativ ist, aber der RSI sich weigert, niedrig innovativ zu sein, zeigt DeltaEma gleichzeitig eine Erhöhung der Kaufkraft, was eine unterste Rückkehr der Goldpalette ist. Die Daten zeigen, dass ein Signal mit einer Bestätigung des RSI-Abweichens eine 35% höhere Gewinnrate hat als ein normales Reversalsignal.
Traditionelle Technik analysiert die Preise, kluge Trader betrachten die Geldflüsse.
Die Stop-Loss-Einstellung verwendet eine 1,5-fache ATR-Dynamik-Anpassung, um zu verhindern, dass feste Stop-Losses häufig in hohen Schwankungen ausgelöst werden, und um sicherzustellen, dass sie in niedrigen Schwankungen ausreichend geschützt sind. Die Berechnung des 14-Zyklus-ATR bietet ein echtes Bild der Marktschwankungen, wobei ein 1,5-facher Faktor die optimale Risiko-Gewinn-Relation in der Rückmessung anzeigt.
“Wenn man die Strategie der Umkehrung nicht umsetzen kann, dann sind die Verluste der Todesfeind, und ein strenger Stop ist die einzige Lösung”.
Die Strategie verlangt, dass der Umsatz mehr als das 1,3-fache des Durchschnittswertes von 20 Zyklen überschreitet, um das Signal als gültig zu bezeichnen. Diese scheinbar einfache Bedingung filtert tatsächlich 70% der minderwertigen Signale. Ohne Umsatz-Koordination ist die Umkehrung wie eine Waffe ohne Kugeln, die praktisch machtlos erscheint.
Die Märkte können täuschen, aber die Volumen nicht.
Die 50-Zyklus-EMA beurteilt den mittleren Trend, die 200-Zyklus-EMA bestimmt die Richtung des Haupttrends. Die Strategie sucht nur nach Umkehrmöglichkeiten, wenn der Preis nahe oder unterhalb der EMA liegt. Diese Art des “Bohms in der Gegenlage” erhöht die Erfolgsrate des Handels von 45% auf 65%.
Nicht alle Überschwünge werden zurückgeworfen, sondern nur Überschwünge an wichtigen Stützpunkten sind abschreibenswert.
Die Rückmeldung zeigt, dass die Strategie in einem wackligen Umfeld hervorragend funktioniert, mit einer Monatsgewinnrate von mehr als 70%. In einem stark trendigen Markt werden jedoch Umkehrsignale leicht von Trendkräften unterdrückt, und es wird empfohlen, die Position zu reduzieren oder die Verwendung zu unterbrechen.
Die Strategie ist nicht allumfassend, sondern nur für bestimmte Marktumstände geeignet. Wenn Sie das erkennen, sind Sie über 90% der Händler.
Es besteht die Gefahr, dass jede quantitative Strategie fehlschlägt, insbesondere unter extremen Marktbedingungen. Die Strategie hat im März 2020 und im Zinsanstiegszyklus 2022 eine Reihe von Verlusten erlitten. Es wird empfohlen, eine strenge Vermögensverwaltung durchzuführen, mit einer einmaligen Risikobereitschaft von nicht mehr als 2% der Konten und einer regelmäßigen Bewertung der Wirksamkeit der Strategie.
/*backtest
start: 2025-12-10 15:15:00
end: 2026-03-10 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FundedRelay
//@version=6
strategy("4x Reversal Confluence Strategy", overlay=true,
margin_long=100, margin_short=100,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100)
// ────────────────────────────────────────
// INPUTS
// ────────────────────────────────────────
emaShortLen = input.int(50, "EMA Short (context)", minval=20)
emaLongLen = input.int(200, "EMA Long (major trend)")
macdFast = input.int(12, "MACD Fast")
macdSlow = input.int(26, "MACD Slow")
macdSignal = input.int(9, "MACD Signal")
rsiLen = input.int(14, "RSI Length")
rsiOversold = input.int(35, "RSI Oversold Level")
rsiOverbought = input.int(65, "RSI Overbought Level")
divLookback = input.int(5, "Divergence Lookback Bars", minval=3)
volMult = input.float(1.3,"Volume > Avg Multiplier", minval=1.0)
atrLen = input.int(14, "ATR Length for Stops")
atrMultSL = input.float(1.5,"ATR Stop Multiplier", minval=0.5)
useVolume = input.bool(true, "Require Volume Spike")
// ────────────────────────────────────────
// INDICATORS
// ────────────────────────────────────────
emaShort = ta.ema(close, emaShortLen)
emaLong = ta.ema(close, emaLongLen)
plot(emaShort, "EMA Short", color=color.blue, linewidth=2)
plot(emaLong, "EMA Long", color=color.orange, linewidth=3)
// MACD
[macdLine, signalLine, hist] = ta.macd(close, macdFast, macdSlow, macdSignal)
// RSI
rsi = ta.rsi(close, rsiLen)
// Volume proxy delta
upVol = close > close[1] ? volume : close == close[1] ? volume * 0.5 : 0.0
dnVol = close < close[1] ? volume : close == close[1] ? volume * 0.5 : 0.0
delta = upVol - dnVol
deltaEma = ta.ema(delta, 5)
cvd = ta.cum(delta)
cvdEma = ta.ema(cvd, 21)
// Volume average
volAvg = ta.sma(volume, 20)
// ────────────────────────────────────────
// DIVERGENCE DETECTION
// ────────────────────────────────────────
priceLow = ta.pivotlow(low, divLookback, divLookback)
priceHigh = ta.pivothigh(high, divLookback, divLookback)
rsiLow = ta.pivotlow(rsi, divLookback, divLookback)
rsiHigh = ta.pivothigh(rsi, divLookback, divLookback)
// Bullish RSI divergence
bullRsiDiv = not na(priceLow) and not na(rsiLow) and
low < low[divLookback * 2] and rsi > rsi[divLookback * 2]
// Bearish RSI divergence
bearRsiDiv = not na(priceHigh) and not na(rsiHigh) and
high > high[divLookback * 2] and rsi < rsi[divLookback * 2]
// ────────────────────────────────────────
// BULLISH CONDITIONS
// ────────────────────────────────────────
bullTrendContext = close <= emaShort or close <= emaLong
bullMacd = ta.crossover(macdLine, signalLine) or (hist > hist[1] and hist[1] <= 0)
bullRsi = rsi < rsiOversold or bullRsiDiv or (rsi[1] <= rsiOversold and rsi > rsiOversold)
bullOrderFlow = deltaEma > 0 and deltaEma > deltaEma[1] and cvdEma > cvdEma[1]
bullVolume = not useVolume or volume > volAvg * volMult
bullSignal = bullTrendContext and bullMacd and bullRsi and bullOrderFlow and bullVolume
// ────────────────────────────────────────
// BEARISH CONDITIONS
// ────────────────────────────────────────
bearTrendContext = close >= emaShort or close >= emaLong
bearMacd = ta.crossunder(macdLine, signalLine) or (hist < hist[1] and hist[1] >= 0)
bearRsi = rsi > rsiOverbought or bearRsiDiv or (rsi[1] >= rsiOverbought and rsi < rsiOverbought)
bearOrderFlow = deltaEma < 0 and deltaEma < deltaEma[1] and cvdEma < cvdEma[1]
bearVolume = not useVolume or volume > volAvg * volMult
bearSignal = bearTrendContext and bearMacd and bearRsi and bearOrderFlow and bearVolume
// ────────────────────────────────────────
// ENTRIES
// ────────────────────────────────────────
if bullSignal
strategy.entry("Long", strategy.long)
if bearSignal
strategy.entry("Short", strategy.short)
// ────────────────────────────────────────
// EXITS
// ────────────────────────────────────────
// Close on opposite signal
if bearSignal
strategy.close("Long", comment="Opp Signal → Exit Long")
if bullSignal
strategy.close("Short", comment="Opp Signal → Exit Short")
// Initial ATR stop-loss
atrVal = ta.atr(atrLen)
strategy.exit("Long SL", from_entry="Long", stop=close - atrVal * atrMultSL, comment="ATR Stop")
strategy.exit("Short SL", from_entry="Short", stop=close + atrVal * atrMultSL, comment="ATR Stop")
// ────────────────────────────────────────
// VISUALS
// ────────────────────────────────────────
plotshape(bullSignal, title="Bull Rev", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearSignal, title="Bear Rev", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
bgcolor(bullSignal ? color.new(color.green, 92) : na)
bgcolor(bearSignal ? color.new(color.red, 92) : na)
// Debug helpers (uncomment when needed)
//plotshape(bullRsiDiv, "Bull RSI Div", shape.labelup, location.belowbar, color=color.lime, text="Bull Div", size=size.tiny)
//plotshape(bearRsiDiv, "Bear RSI Div", shape.labeldown, location.abovebar, color=color.orange, text="Bear Div", size=size.tiny)