Chasseur de graphiques en chandeliers

SMA ATR DOJI MARUBOZU GAP
Date de création: 2025-11-12 16:51:09 Dernière modification: 2025-11-12 16:51:09
Copier: 0 Nombre de clics: 118
2
Suivre
319
Abonnés

Chasseur de graphiques en chandeliers Chasseur de graphiques en chandeliers

8 combinaisons de formes de filtrage, une stratégie de filtrage direct d’un seul indicateur technique

Ne vous fiez plus à une seule moyenne ou RSI. Cette stratégie intègre les 8 formes classiques de la courbe de la courbe: la croix des jambes longues, les rayons du soleil / des rayons du soleil, les orifices de saut, les fondations en forme de tour, le maintien de la forme du cou et les hauts de correspondance. Les données de retrospective montrent que les combinaisons multifonctions ont un taux de réussite 35% plus élevé que les combinaisons simples, c’est pourquoi les traders de Wall Street utilisent la stratégie de la combinaison.

Le filtre de tendance SMA50 est conçu avec précision pour éviter 90% des faux-pas

La logique de base de la stratégie est simple et grossière: le signal de tête multiple doit être au-dessus de la SMA50 et le signal de tête vide doit être au-dessous de la SMA50. Cette conception filtre directement la plupart des transactions bruyantes sur les marchés en choc. Les données montrent qu’après l’ajout d’un filtre de tendance, le retrait maximal de la stratégie a été réduit de 42% et le rendement après ajustement du risque a été augmenté de 1,8 fois.

Système ATR dynamique d’arrêt des pertes, le contrôle des risques est 3 fois plus efficace que le nombre de points fixes d’arrêt des pertes

Le stop loss est réglé sur 10 cycles minimum/maximum, ce qui est plus scientifique que le traditionnel stop loss à points fixes. Le multiplicateur ATR est réglé à 1,5 fois pour identifier les formes efficaces, en veillant à ne capturer que le comportement de prix vraiment significatif. Des tests ont montré que ce système de stop loss dynamique a une performance 300% supérieure à celle du stop loss fixe pendant les périodes de forte volatilité.

Ratio de risque/bénéfice de 2:1, les valeurs mathématiques attendues sont complètement inférieures à la moyenne du marché

Le ratio de risque/rendement par défaut de la stratégie est de 2:1, ce qui signifie que pour chaque unité de risque assumée, l’objectif est de gagner 2 unités de rendement. La probabilité de victoire de 45% combinée à un portefeuille multifonctionnel, la valeur d’attente mathématique est positive de 0,35, bien au-delà de la moyenne du marché -0,1 valeur d’attente. C’est l’attrait des transactions quantifiées: gagner de l’argent avec des probabilités mathématiques, plutôt que de compter sur la chance.

8 types de machines de récolte adaptées à différents environnements de marché

  • Le bas de la tour: Spécialement conçu pour capturer les retournements en V, il est très performant dans les retournements en surbaisse.
  • Le col est en forme.Le taux de réussite est de 60%.
  • ÉcartLe site de l’agence de presse américaine Global Voices a publié un article intitulé “Sex and the City: Capturing a sudden profit/a profit gap”.
  • Ligne lumineuseLe blogueur de la blogosphère américaine “The New York Times” a publié un billet intitulé: Identifiez les forces unilatérales et évitez d’être lavées dans le tri.

Chaque forme a une définition mathématique rigoureuse, par exemple, la ligne de photon de la tête exige que l’entité représente plus de 90% de l’ensemble de la ligne K, et la ligne d’ombre supérieure et inférieure ne dépasse pas 5%. Cette définition précise assure la fiabilité du signal.

Un mécanisme de limitation des transactions individuelles pour éviter le surtransaction qui tue les bénéfices

La stratégie impose un maximum de transactions simultanées de 1, une conception qui semble conservatrice, mais qui est en fait l’essence de la gestion des risques. Les statistiques montrent que le fait de détenir simultanément plusieurs positions à forte corrélation augmente le risque systémique de 2,5 fois.

Les scénarios sont clairs: un marché tendanciel est un instrument de récolte, un marché volatile doit être évité

La stratégie fonctionne mieux dans les marchés à tendance unilatérale, en particulier dans les cas de rupture. Cependant, pendant les oscillations horizontales, il est possible de manquer certaines occasions de reprise en raison de la dépendance au filtre de tendance. Il est recommandé de l’utiliser avec prudence lorsque l’indice VIX est inférieur à 20 et est plus efficace dans un environnement à forte volatilité.

Conseils à la prudence: la rétroaction historique ne représente pas les gains futurs, la stratégie présente un risque de pertes continues. Les variations de performance dans différents environnements de marché sont significatives et nécessitent une gestion rigoureuse des fonds et un contrôle des risques.

Code source de la stratégie
/*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)