Bewertungsstrategie zur Schwungidentifizierung

RSI SMA VOLUME PATTERN
Erstellungsdatum: 2025-09-09 09:24:08 zuletzt geändert: 2025-09-09 09:24:08
Kopie: 0 Klicks: 275
2
konzentrieren Sie sich auf
319
Anhänger

Bewertungsstrategie zur Schwungidentifizierung Bewertungsstrategie zur Schwungidentifizierung

Das ist keine gewöhnliche Schwingungsstrategie, sondern ein Präzisionsscharfschützersystem mit einer KI-Bewertung.

Wo ist das Problem mit der traditionellen Schwingstrategie? Zu viele Signale, unterschiedliche Qualität, häufige falsche Durchbrüche.Jedes Signal hat eine Qualitätsbewertung von 1 bis 5 Punkten, nur hochwertige Signale über 4 Punkte werden gehandelt.

Die Kernlogik ist einfach und grob: Identifizieren Sie ein Höheres Tief (Higher Low) und ein Niedriges Tief (Lower High), und bewerten Sie das Signal in 4 Dimensionen.Mindestens vier Minuten, um 80% der Spam-Signale direkt zu filtern

Wo ist ein 5-Dimensionalsystem besser als ein einzelner Indikator?

Basispunkte 1Die Existenz von Schwankungen bestätigt Bestätigung der Lieferung + 1 PunktDas ist das zweite Mal im Jahr, dass die Bank einen Umsatz von mehr als 20 Zyklen erzielt. RSI-Position + 1 PunktDer RSI liegt im Bereich von 30-70, um falsche Signale zu vermeiden, die zu einem Überkauf führen. K-Linien-Einheit + 1 PunktEs gibt keine Daten, die zeigen könnten, dass es sich um eine Art von Kreuzstache handelt. Trendgleichstellung + 1 PunkteDer Preis, die Ma20 und die Ma50 sind alle gleich.

Ergebnis: 5 Punkte volle Punktzahl höchste Signalgewinnrate, 4 Punkte oder mehr sind handelbar, 3 Punkte oder weniger werden direkt ignoriert

Stop-loss-Design: 10-Zyklus-Grenzwerte, keine willkürlich eingestellte ATR

Die Stop-Stopp-Logik ist sehr klar:

  • Ein zusätzlicher Stop-Loss ist der Mindestwert der letzten 10 K-Linien.
  • Der Stop-Loss ist der höchste Punkt der letzten 10 K-Linien.

Warum zehn?Da die Schwingungsstrategie im Wesentlichen darauf abzielt, kurzfristige Umkehrungen zu erfassen, bietet die 10-Zyklus-Strategie dem Preis genügend Atempause und verhindert, dass die Stop-Loss-Distanz zu groß ist.

Das ist eine gute Gelegenheit, um zu handeln.

Die Strategie identifiziert auch “Scheiterschwankungen”:

  • Higher Low scheitert: Nach einem höheren Tiefpunkt fällt es wieder
  • Lower Highs scheitern: Nach niedrigeren Höhen entsteht ein weiterer Durchbruch

Diese Misserfolge sind oft ein Hinweis auf eine Beschleunigung des Trends und ein perfekter Zeitpunkt, um den Handel umzukehren

Kontinuierliches Signal = Trendbestätigung

Wenn zwei aufeinanderfolgende K-Streifen in derselben Richtung bestätigen, wird mit einem Diamantenmarkierung angezeigt. Dies bedeutet normalerweise:

  • Weiterlesen: Aufwärtsbewegungen festgestellt
  • Anhaltende Abwärtsbeobachtung: Abwärtstrend festgestellt

Die Gewinnrate für eine Reihe von Signalen ist in der Regel 15 bis 20% höher als für einzelne Signale.

Anwendbarer Szenario: Schwingungsprävalenz / offene Märkte

Bessere Umgebung

  • Markt mit klaren Trends, aber häufigen Rückschlägen
  • Moderate Schwankungen (nicht extrem ruhig oder extrem unruhig)
  • Sorten mit relativ stabilen Umsätzen

Vermeiden Sie Szenen

  • Einseitige Sturmstürme (Schwanksignale werden häufig durchbrochen)
  • Seitenplatte mit sehr geringer Schwankungsrate (Signal ist selten und von schlechter Qualität)
  • Kleine, sehr unbeständige Sorten

Risiko-Hinweis: Vergangenheit ist nicht gleichbedeutend mit zukünftigen Erträgen

Die Risiken sind klar

  1. Strategie, bei der es zu kontinuierlichen Verlusten kommen kann, insbesondere während einer Trendwende
  2. Über vier Minuten ist ein sehr gutes Signal, aber es hat immer noch eine 30- bis 40-prozentige Ausfallrate.
  3. Die Stop-Loss-Strategie ist relativ locker und die Einmalverluste können hoch sein.
  4. Unterschiede in der Leistung in verschiedenen Marktumgebungen

FinanzberatungEinmalige Risiken von nicht mehr als 2% des Kontos, Aussetzung des Handels nach drei Verlusten in Folge, Neubewertung der Marktbedingungen.

Strategiequellcode
/*backtest
start: 2024-09-09 00:00:00
end: 2025-09-07 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=6
strategy("Higher Lows, Lower Highs & Failures with Signal Quality Scoring", overlay=true)

// --- Higher Low detection ---
shares = 1
minScore = 4  // Minimum score to take trades

lowPoint      = ta.lowest(low, 3)
prevLowPoint  = ta.lowest(low[3], 3)
isHigherLow   = low == lowPoint and low > prevLowPoint
bullConfirm   = isHigherLow and close > open

// --- Lower High detection ---
highPoint     = ta.highest(high, 3)
prevHighPoint = ta.highest(high[3], 3)
isLowerHigh   = high == highPoint and high < prevHighPoint
bearConfirm   = isLowerHigh and close < open

// --- Failures ---
failHigherLow = isHigherLow[1] and low < low[1]
failLowerHigh = isLowerHigh[1] and high > high[1]

// --- 2-in-a-row detection ---
bullSecond = bullConfirm and bullConfirm[1]
bearSecond = bearConfirm and bearConfirm[1]

// --- SIGNAL QUALITY SCORING (1-5 scale) ---
bullScore = if bullConfirm
    score = 1  // Base score
    
    // Factor 1: Volume confirmation
    avgVolume = ta.sma(volume, 20)
    if volume > avgVolume * 1.2
        score := score + 1
        
    // Factor 2: RSI positioning
    rsi = ta.rsi(close, 14)
    if rsi < 70 and rsi > 30
        score := score + 1
        
    // Factor 3: Candle strength
    bodySize = math.abs(close - open)
    candleRange = high - low
    bodyRatio = candleRange > 0 ? bodySize / candleRange : 0
    if bodyRatio > 0.6
        score := score + 1
        
    // Factor 4: Trend alignment
    ma20 = ta.sma(close, 20)
    ma50 = ta.sma(close, 50)
    if ma20 > ma50 and close > ma20
        score := score + 1
        
    math.max(1, math.min(5, score))
else
    na

bearScore = if bearConfirm
    score = 1  // Base score
    
    // Factor 1: Volume confirmation
    avgVolume = ta.sma(volume, 20)
    if volume > avgVolume * 1.2
        score := score + 1
        
    // Factor 2: RSI positioning
    rsi = ta.rsi(close, 14)
    if rsi > 30 and rsi < 70
        score := score + 1
        
    // Factor 3: Candle strength
    bodySize = math.abs(close - open)
    candleRange = high - low
    bodyRatio = candleRange > 0 ? bodySize / candleRange : 0
    if bodyRatio > 0.6
        score := score + 1
        
    // Factor 4: Trend alignment
    ma20 = ta.sma(close, 20)
    ma50 = ta.sma(close, 50)
    if ma20 < ma50 and close < ma20
        score := score + 1
        
    math.max(1, math.min(5, score))
else
    na

// --- Plot main signals with score-based styling ---
// Bullish signals
plotshape(bullConfirm and bullScore == 1, "Bull Score 1", shape.triangleup, location.belowbar, color.gray, size=size.tiny)
plotshape(bullConfirm and bullScore == 2, "Bull Score 2", shape.triangleup, location.belowbar, color.orange, size=size.small)
plotshape(bullConfirm and bullScore == 3, "Bull Score 3", shape.triangleup, location.belowbar, color.yellow, size=size.normal)
plotshape(bullConfirm and bullScore == 4, "Bull Score 4", shape.triangleup, location.belowbar, color.lime, size=size.normal)
plotshape(bullConfirm and bullScore == 5, "Bull Score 5", shape.triangleup, location.belowbar, color.green, size=size.large)

// Bearish signals
plotshape(bearConfirm and bearScore == 1, "Bear Score 1", shape.triangledown, location.abovebar, color.gray, size=size.tiny)
plotshape(bearConfirm and bearScore == 2, "Bear Score 2", shape.triangledown, location.abovebar, color.orange, size=size.small)
plotshape(bearConfirm and bearScore == 3, "Bear Score 3", shape.triangledown, location.abovebar, color.yellow, size=size.normal)
plotshape(bearConfirm and bearScore == 4, "Bear Score 4", shape.triangledown, location.abovebar, color.lime, size=size.normal)
plotshape(bearConfirm and bearScore == 5, "Bear Score 5", shape.triangledown, location.abovebar, color.green, size=size.large)

// --- Plot failures ---
plotshape(failHigherLow, "Failed Higher Low", shape.arrowdown, location.abovebar, color.red, size=size.small)
plotshape(failLowerHigh, "Failed Lower High", shape.arrowup, location.belowbar, color.green, size=size.small)

// --- Plot consecutive signals ---
plotshape(bullSecond, "Double Bullish Star", shape.diamond, location.bottom, color.lime, size=size.tiny)
plotshape(bearSecond, "Double Bearish Star", shape.diamond, location.top, color.red, size=size.tiny)

// --- Display score labels ---
if bullConfirm
    labelColor = bullScore == 1 ? color.gray : bullScore == 2 ? color.orange : bullScore == 3 ? color.yellow : bullScore == 4 ? color.lime : color.green
    label.new(bar_index, low - (high - low) * 0.1, "↑ " + str.tostring(bullScore), style=label.style_label_up, color=labelColor, textcolor=color.white, size=size.small)

if bearConfirm
    labelColor = bearScore == 1 ? color.gray : bearScore == 2 ? color.orange : bearScore == 3 ? color.yellow : bearScore == 4 ? color.lime : color.green
    label.new(bar_index, high + (high - low) * 0.1, "↓ " + str.tostring(bearScore), style=label.style_label_down, color=labelColor, textcolor=color.white, size=size.small)

// --- Alerts for high-quality signals only ---
alertcondition(bullConfirm and bullScore >= 4, "High Quality Bullish", "Strong Bullish Signal Detected")
alertcondition(bearConfirm and bearScore >= 4, "High Quality Bearish", "Strong Bearish Signal Detected")

// --- STRATEGY LOGIC ---
// Track previous highs and lows for stop levels
var float prevHigh = na
var float prevLow = na

// Update previous high/low when we get signals
if bullConfirm and bullScore >= minScore
    prevLow := ta.lowest(low, 10)  // Previous 10-bar low for stop
    
if bearConfirm and bearScore >= minScore
    prevHigh := ta.highest(high, 10)  // Previous 10-bar high for stop

// Entry conditions (only scores 4 or higher)
longCondition = bullConfirm and bullScore >= minScore
shortCondition = bearConfirm and bearScore >= minScore

// Execute trades
if longCondition and strategy.position_size == 0
    strategy.entry("Long", strategy.long, qty=shares)
    strategy.exit("Long Exit", "Long", stop=prevLow)
    
if shortCondition and strategy.position_size == 0
    strategy.entry("Short", strategy.short, qty=shares)
    strategy.exit("Short Exit", "Short", stop=prevHigh)

// Close opposite position if new signal occurs
if longCondition and strategy.position_size < 0
    strategy.close("Short")
    strategy.entry("Long", strategy.long, qty=shares)
    strategy.exit("Long Exit", "Long", stop=prevLow)
    
if shortCondition and strategy.position_size > 0
    strategy.close("Long")
    strategy.entry("Short", strategy.short, qty=shares)
    strategy.exit("Short Exit", "Short", stop=prevHigh)

// Plot stop levels for visualization
plot(strategy.position_size > 0 ? prevLow : na, "Long Stop", color.red, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size < 0 ? prevHigh : na, "Short Stop", color.red, linewidth=2, style=plot.style_linebr)