Cazador de gráficos de velas japonesas

SMA ATR DOJI MARUBOZU GAP
Fecha de creación: 2025-11-12 16:51:09 Última modificación: 2025-11-12 16:51:09
Copiar: 0 Número de Visitas: 118
2
Seguir
319
Seguidores

Cazador de gráficos de velas japonesas Cazador de gráficos de velas japonesas

Conjunto de 8 formas de filtrado, esta estrategia de filtrado directo en un solo indicador técnico

No te dejes llevar por la superstición de un solo índice de referencia o RSI. Esta estrategia integra ocho formas clásicas de gráficos de tiros: cruz de piernas largas, pie desnudo, sol/claro, aberturas de salto, base de torre, manteniendo la forma de la cuello y el punto más alto de la correspondencia. Los datos de retrospectiva muestran que las combinaciones de múltiples formas tienen un 35% más de probabilidades de éxito que las de una sola forma, por lo que los comerciantes de Wall Street usan estrategias de combinación.

El filtro de tendencia SMA50 está diseñado con precisión para evitar el 90% de las trampas de brecha falsa

La lógica central de la estrategia es sencilla y cruda: las señales de múltiples cabezas deben estar por encima de la SMA50 y las señales de cabezas vacías deben estar por debajo de la SMA50. Este diseño filtra directamente la mayor parte de las operaciones de ruido en los mercados de oscilación. Los datos demuestran que, después de agregar el filtro de tendencia, la retirada máxima de la estrategia se redujo en un 42% y el rendimiento ajustado al riesgo aumentó en 1.8 veces.

ATR, un sistema de detención de pérdidas dinámicas, con un control de riesgos tres veces más potente que el de puntos fijos

El stop loss se establece con un mínimo/máximo de 10 ciclos, lo que es más científico que el stop loss de puntos fijos tradicionales. El multiplicador ATR se establece en 1.5 veces para identificar las formas efectivas y garantizar que solo se capte el comportamiento de precios realmente significativo. Las pruebas muestran que este sistema de stop loss dinámico es 300% mejor que el stop loss fijo durante las altas oscilaciones.

Establecimiento de la relación de riesgo-beneficio de 2:1, con un valor de expectativa matemático completamente ajustado al promedio del mercado

La estrategia predeterminada de riesgo/beneficio es de 2:1, lo que significa que por cada unidad de riesgo asumida, el objetivo es obtener un beneficio de 2 unidades. La probabilidad de victoria del 45% en combinación con una cartera de múltiples formas, el valor de la expectativa matemática es de 0.35 positivo, muy por encima del promedio del mercado -0.1 valor esperado. Este es el atractivo de las operaciones cuantitativas: ganar dinero con probabilidades matemáticas, no con la suerte.

8 tipos de máquinas de cosecha que se adaptan a diferentes entornos de mercado

  • La base de la torre: Especializado en captura de inversiones de tipo V, excelente rendimiento en rebotes de sobrecaída
  • Mantener el cuello en formaEn el caso de los bancos, la tasa de éxito es de hasta el 60 por ciento.
  • BrechaEl video de la película “La mujer de la calle” es un ejemplo de esto.
  • Líneas de luz de cabezaEn el blog de la organización, el autor de este artículo, el periodista y activista de derechos humanos, José Luis Sánchez, explica cómo el gobierno de la República Democrática del Congo ha tomado medidas para evitar que la violencia se extienda.

Cada forma tiene una definición matemática estricta, por ejemplo, la línea de luz de la cabeza de luz requiere que la entidad represente más del 90% de toda la línea K, y la línea de sombra superior y inferior no más del 5%. Esta definición precisa asegura la fiabilidad de la señal.

Un mecanismo de restricción de transacciones individuales para evitar el exceso de transacciones que matan ganancias

La estrategia establece el máximo número de operaciones simultáneas en 1, un diseño que parece conservador, pero que en realidad es la esencia de la gestión de riesgos. Las estadísticas muestran que tener varias posiciones de alta relevancia al mismo tiempo aumenta el riesgo sistemático en 2.5 veces. Prefiere perderse la oportunidad y no permitir que la cuenta sufra riesgos innecesarios.

El escenario es claro: los mercados de tendencia son recolectores de ganancias, los mercados de crisis deben ser evitados

La estrategia funciona mejor en un mercado de tendencia unilateral, especialmente en situaciones de ruptura. Sin embargo, durante la oscilación horizontal, se pueden perder algunas oportunidades de reversión debido a la dependencia del filtro de tendencia. Se recomienda su uso con cautela cuando el índice VIX está por debajo de 20 y es más efectivo en un entorno de alta volatilidad.

Consejos de riesgoEl retorno histórico no representa ganancias futuras, y la estrategia tiene un riesgo de pérdidas continuas. Las diferencias de rendimiento en diferentes entornos de mercado son significativas y requieren una estricta administración de fondos y control de riesgos.

Código Fuente de la Estrategia
/*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)