Candlestick Chart Hunter

SMA ATR DOJI MARUBOZU GAP
Erstellungsdatum: 2025-11-12 16:51:09 zuletzt geändert: 2025-11-12 16:51:09
Kopie: 0 Klicks: 118
2
konzentrieren Sie sich auf
319
Anhänger

Candlestick Chart Hunter Candlestick Chart Hunter

8 Kombinationen von Filtergraphiken, die eine Strategie zur direkten Verdichtung eines einzigen technischen Indikators darstellen

Die Strategie integriert die 8 klassischen Kurvenformate: Langbein-Kreuz, Barefoot-Sonnen-/Dunkelstrahl, Hohlraum, Turm-Boden, Hals-Form-Bewahrung und Matching-Höhepunkt. Die Rückmeldedaten zeigen, dass die Gewinnrate für Multi-Form-Paare 35% höher ist als für die Ein-Form-Paare, weshalb Wall Street-Händler eine Kombinationsstrategie verwenden.

SMA50-Trendfilter sind exakt ausgelegt, um 90% der False-Breakout-Fallen zu vermeiden

Die Kernlogik der Strategie ist einfach und grob: Die Mehrkopfsignale müssen oberhalb der SMA50 liegen, die Hohlkopfsignale müssen unterhalb der SMA50 liegen. Diese Konstruktion filtert den Großteil der Geräusche in den Schaukelmärkten direkt aus. Die Daten belegen, dass die maximale Rücknahme der Strategie nach dem Hinzufügen des Trendfilters um 42% reduziert und die Gewinne nach der Risikobereinigung um das 1,8-fache erhöht wurden.

ATR-Dynamische Stop-Loss-System, Risikokontrolle ist dreimal stärker als die Festpunkte Stop-Loss

Die Stop-Loss-Einstellung mit 10-Zyklus-Tiefst-/Hochst-Punkt ist wissenschaftlicher als die herkömmliche Festpunkt-Stop-Einstellung. Die ATR-Multiplizierung ist auf das 1,5-fache eingestellt, um die effektive Form zu erkennen und sicherzustellen, dass nur wirklich sinnvolle Preisbewegungen erfasst werden. Experimente haben gezeigt, dass dieses dynamische Stop-System 300% besser funktioniert als die feste Stop-Einstellung bei hohen Schwankungen.

2: 1 Risiko-Gewinn-Verhältnis-Einstellung, mathematische Erwartungshöhe vollständig unterdrückt Marktdurchschnitt

Das Strategie-Default-Risiko-Gewinn-Verhältnis ist 2:1, was bedeutet, dass für jede Einheit des Risikos, die Sie einnehmen, 2 Einheiten des Gewinns erzielt werden sollen. Die Gewinnrate von 45% in Kombination mit einem multivariaten Portfolio liegt bei einem mathematischen Erwartungswert von positiven 0,35 und weit über dem Marktdurchschnitt von -0,1. Das ist der Reiz von quantifizierten Geschäften: Sie verdienen mit mathematischen Wahrscheinlichkeiten, nicht mit Glück.

8 verschiedene Formen von Harvester, die sich an unterschiedliche Marktbedingungen anpassen

  • Die Unterseite des TurmsDie V-Rückwärtsbewegung ist besonders gut für die Überfall-Rückwärtsbewegung.
  • Hals in FormDie Erfolgsrate von 60 Prozent ist ein Blick auf den Aufwärtstrend, der sich durch einen Durchbruch in der Aufwärtsbewegung auszeichnet.
  • LückeDas ist die einzige Möglichkeit, die es gibt, um die sexuellen Ausbrüche zu erfassen.
  • Lichtkopf und LichtfußDas sind die wichtigsten Themen, die wir diskutieren können.

Jede Form hat eine strenge mathematische Definition, z. B. die Lichtkopf-Lichtfußlinie verlangt, dass die Entität mehr als 90% der gesamten K-Linie ausmacht, die oberen und unteren Schattenlinien nicht mehr als 5%. Diese genaue Definition gewährleistet die Zuverlässigkeit des Signals.

Ein Einzeltransaktionsschranken, um die Gewinne von Übertriebenen zu vermeiden

Die Strategie setzt die maximale Anzahl der gleichzeitigen Transaktionen auf 1, was eine konservative Ausführung ist, die in Wirklichkeit die Essenz des Risikomanagements ist. Statistiken zeigen, dass die gleichzeitige Haltung mehrerer relevanter Positionen das Systemrisiko um das 2,5-fache erhöht.

Die Szenarien sind eindeutig: Trend-Markt-Gewinnspielzeug, Shock-Markt zu vermeiden

Die Strategie funktioniert am besten in einseitigen Trendmärkten, insbesondere bei Durchbruchszuständen. Während der Querkurve können jedoch aufgrund der Abhängigkeit von Trendfiltern einige Umkehrmöglichkeiten verpasst werden. Vorsicht wird empfohlen, wenn der VIX-Index unter 20 liegt, und es wirkt sich besser bei hoher Volatilität aus.

GefahrenhinweiseDie historische Rückschau ist nicht repräsentativ für zukünftige Erträge, und die Strategie besteht das Risiko einer fortlaufenden Verlustentwicklung. Die Performance unterscheidet sich erheblich zwischen verschiedenen Marktumgebungen und erfordert eine strenge Kapitalverwaltung und Risikokontrolle.

Strategiequellcode
/*backtest
start: 2024-11-11 00:00:00
end: 2025-11-11 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Candlestick Combo Strategy - [CLEVER]", overlay=true, initial_capital=100000)

// === User Inputs
sma_len      = input.int(50, "SMA Length", minval=1)
atr_len      = input.int(14, "ATR Length", minval=1)
atr_mult     = input.float(1.5, "ATR Multiplier for pattern size", step=0.1)
rr           = input.float(2.0, "Risk:Reward", step=0.1)
maxOpenTrades = input.int(1, "Max concurrent open trades", minval=1)

// === Indicators / Trend Filter
sma50   = ta.sma(close, sma_len)
myATR   = ta.atr(atr_len)
uptrend = close > sma50
downtrend = close < sma50

// === Helper: Safe indexing
hasHistory(bars) =>
    bar_index >= bars

// === Candlestick Patterns ===

// Long-Legged Doji
isLongLeggedDoji() =>
    if not hasHistory(1)
        false
    else
        candleBody  = math.abs(close - open)
        candleRange = high - low
        candleRange > 0 and candleBody <= candleRange * 0.20 and 
         (high - math.max(open, close)) >= candleRange * 0.40 and 
         (math.min(open, close) - low) >= candleRange * 0.40

// Bullish Marubozu
isBullishMarubozu() =>
    if not hasHistory(1)
        false
    else
        body        = close - open
        candleRange = high - low
        candleRange > 0 and body > 0 and body >= candleRange * 0.90 and 
         (high - close) <= candleRange * 0.05 and 
         (open - low)  <= candleRange * 0.05

// Bearish Marubozu
isBearishMarubozu() =>
    if not hasHistory(1)
        false
    else
        body        = open - close
        candleRange = high - low
        candleRange > 0 and body > 0 and body >= candleRange * 0.90 and 
         (open - high) <= candleRange * 0.05 and 
         (close - low) <= candleRange * 0.05

// Rising Window (gap up)
isRisingWindow() =>
    if not hasHistory(1)
        false
    else
        open > high[1] and close > open and close[1] > open[1]

// Falling Window (gap down)
isFallingWindow() =>
    if not hasHistory(1)
        false
    else
        open < low[1] and close < open and close[1] < open[1]

// Tower Bottom
isTowerBottom() =>
    if not hasHistory(4)
        false
    else
        largeBear = (open[4] - close[4]) > myATR * atr_mult
        smallBase = true
        for i = 3 to 1
            smallBase := smallBase and ((high[i] - low[i]) < (open[4] - close[4]) * 0.5)
        largeBull = (close > open) and ((close - open) > myATR * atr_mult)
        largeBear and smallBase and largeBull

// Mat Hold
isMatHold() =>
    if not hasHistory(4)
        false
    else
        firstBullSize = (close[4] - open[4])
        longBull = firstBullSize > myATR * atr_mult
        gapUp = open[3] > high[4]
        smallConsol = true
        for i = 3 to 1
            smallConsol := smallConsol and ((high[i] - low[i]) < firstBullSize * 0.3) and low[i] > low[4]
        finalBull = (close > open) and ((close - open) > firstBullSize * 0.8)
        longBull and gapUp and smallConsol and finalBull

// Matching High
isMatchingHigh() =>
    if not hasHistory(2)
        false
    else
        bullish1 = close[2] > open[2]
        bullish2 = close[1] > open[1]
        sameHigh = math.abs(high[2] - high[1]) <= myATR * 0.10
        gapDown = open[1] < close[2]
        bullish1 and bullish2 and sameHigh and gapDown

// === Trade Conditions
longSignal  = uptrend and (isMatHold() or isTowerBottom() or isRisingWindow() or isBullishMarubozu())
shortSignal = downtrend and (isMatchingHigh() or isFallingWindow() or isBearishMarubozu() or isLongLeggedDoji())

// Plot signals on chart
plotshape(longSignal,  title="Long Signal",  style=shape.triangleup,   location=location.belowbar, color=color.new(color.lime, 0), size=size.tiny)
plotshape(shortSignal, title="Short Signal", style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny)

// === Entry / Exit Logic with maxOpenTrades gating
canEnter() =>
    strategy.opentrades < maxOpenTrades

if (longSignal and canEnter())
    stopLevel = ta.lowest(low, 10)
    risk = close - stopLevel
    target = close + risk * rr
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop=stopLevel, limit=target)

if (shortSignal and canEnter())
    stopLevel = ta.highest(high, 10)
    risk = stopLevel - close
    target = close - risk * rr
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop=stopLevel, limit=target)