Estrategia avanzada de trading con ruptura de patrones múltiples

DOJI PIN BAR HAMMER BREAKOUT CANDLESTICK RSI
Fecha de creación: 2025-02-20 13:33:36 Última modificación: 2025-02-20 13:33:36
Copiar: 0 Número de Visitas: 349
2
Seguir
319
Seguidores

Estrategia avanzada de trading con ruptura de patrones múltiples Estrategia avanzada de trading con ruptura de patrones múltiples

Descripción general

La estrategia es un sistema de negociación avanzado basado en la identificación de formas de múltiples tecnologías, que integra el análisis de las formas de la barra y los principios de negociación de ruptura. La estrategia es capaz de identificar y negociar varias formas clásicas de la barra, incluidas las formas de la cruz ((Doji), el cordón ((Hammer) y la forma de la aguja P ((in Bar), mientras que se combina con el sistema de confirmación de doble barra para aumentar la fiabilidad de la señal de negociación.

Principio de estrategia

La lógica central de la estrategia se basa en los siguientes elementos clave:

  1. Sistemas de reconocimiento de formas - Reconocimiento de las tres formas clave del diagrama a través de cálculos matemáticos precisos: estrellas cruzadas, líneas de arco y líneas de agujas. Cada forma tiene sus criterios de reconocimiento únicos, como la relación proporcional entre la entidad y la línea de sombra.
  2. Mecanismo de confirmación de ruptura - Se utiliza un sistema de confirmación de doble cadena que requiere que la segunda línea de conexión rompa el punto más alto de la línea de conexión anterior (hacer más) o el punto más bajo (hacer menos) para reducir la señal falsa.
  3. Determinación del precio objetivo - Utiliza un período de retroceso ajustable (de 20 ciclos por defecto) para determinar el máximo o mínimo más reciente como precio objetivo, lo que hace que la estrategia sea dinámica.

Ventajas estratégicas

  1. Identificación de múltiples formas - Aumenta significativamente las oportunidades potenciales de transacción mediante la vigilancia simultánea de varias formas de la tecnología.
  2. Mecanismo de confirmación de señales - El sistema de confirmación de doble casilla reduce el riesgo de señales falsas.
  3. Visualización de la zona de negociación - Utilice cuadros de color para marcar la zona de negociación, para que el objetivo de la negociación sea más intuitivo.
  4. Ajuste de parámetros flexible - los parámetros como el período de retroceso se pueden ajustar según las diferentes condiciones del mercado.

Riesgo estratégico

  1. Riesgo de fluctuaciones en el mercado - puede generar falsas señales de ruptura durante la alta volatilidad.
  2. Riesgo de deslizamiento - En un mercado con poca liquidez, el precio de transacción real puede estar muy alejado del precio de la señal.
  3. Riesgo de reversión de la tendencia - En un mercado de fuerte tendencia, las señales de reversión pueden causar grandes pérdidas.

Dirección de optimización

  1. Introducción de la confirmación de tránsito - Se recomienda agregar el análisis de tránsito en el sistema de reconocimiento de formas para mejorar la fiabilidad de la señal.
  2. Mecanismo de stop loss dinámico - el stop loss dinámico se puede configurar en función del ATR o de la volatilidad.
  3. Filtrado de entornos de mercado - Agrega indicadores de intensidad de tendencia y filtra las señales de reversión durante una tendencia fuerte.
  4. Optimización del marco de tiempo - Considere la confirmación de la señal en varios marcos de tiempo.

Resumir

La estrategia establece un sistema de negociación completo mediante la combinación de análisis de formas de múltiples técnicas y principios de negociación de ruptura. Su ventaja radica en la confirmación multidimensional de la señal y el ajuste flexible de los parámetros, pero también requiere atención al riesgo de fluctuación y liquidez del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Target(Made by Karan)", overlay=true)

// Input for lookback period
lookbackPeriod = input.int(20, title="Lookback Period for Recent High/Low", minval=1)

// --- Pattern Identification Functions ---

// Identify Doji pattern
isDoji(open, high, low, close) =>
    bodySize = math.abs(close - open)
    rangeSize = high - low
    bodySize <= rangeSize * 0.1  // Small body compared to total range

// Identify Hammer pattern
isHammer(open, high, low, close) =>
    bodySize = math.abs(close - open)
    lowerShadow = open - low
    upperShadow = high - close
    bodySize <= (high - low) * 0.3 and lowerShadow > 2 * bodySize and upperShadow <= bodySize * 0.3  // Long lower shadow, small upper shadow

// Identify Pin Bar pattern
isPinBar(open, high, low, close) =>
    bodySize = math.abs(close - open)
    rangeSize = high - low
    upperShadow = high - math.max(open, close)
    lowerShadow = math.min(open, close) - low
    (upperShadow > bodySize * 2 and lowerShadow < bodySize) or (lowerShadow > bodySize * 2 and upperShadow < bodySize)  // Long shadow on one side

// --- Candle Breakout Logic ---

// Identify the first green candle (Bullish)
is_first_green_candle = close > open

// Identify the breakout above the high of the first green candle
breakout_green_candle = ta.crossover(close, high[1]) and is_first_green_candle[1]

// Identify the second green candle confirming the breakout
second_green_candle = close > open and breakout_green_candle[1]

// Find the recent high (for the target)
recent_high = ta.highest(high, lookbackPeriod)  // Use adjustable lookback period

// Plot the green rectangle box if the conditions are met and generate buy signal
var float start_price_green = na
var float end_price_green = na

if second_green_candle
    start_price_green := low[1]  // Low of the breakout green candle
    end_price_green := recent_high  // The most recent high in the lookback period
    strategy.entry("Buy", strategy.long)  // Buy signal

// --- Red Candle Logic ---

// Identify the first red candle (Bearish)
is_first_red_candle = close < open

// Identify the breakdown below the low of the first red candle
breakdown_red_candle = ta.crossunder(close, low[1]) and is_first_red_candle[1]

// Identify the second red candle confirming the breakdown
second_red_candle = close < open and breakdown_red_candle[1]

// Find the recent low (for the target)
recent_low = ta.lowest(low, lookbackPeriod)  // Use adjustable lookback period

// Plot the red rectangle box if the conditions are met and generate sell signal
var float start_price_red = na
var float end_price_red = na

if second_red_candle
    start_price_red := high[1]  // High of the breakout red candle
    end_price_red := recent_low  // The most recent low in the lookback period
    strategy.entry("Sell", strategy.short)  // Sell signal

// --- Pattern Breakout Logic for Doji, Hammer, Pin Bar ---

// Detect breakout of Doji, Hammer, or Pin Bar patterns
var float start_price_pattern = na
var float end_price_pattern = na

// Check for Doji breakout
if isDoji(open, high, low, close) and ta.crossover(close, high[1])
    start_price_pattern := low[1]  // Low of the breakout Doji
    end_price_pattern := recent_high  // The most recent high in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = end_price_pattern, bottom = start_price_pattern, border_color = color.new(color.blue, 0), bgcolor = color.new(color.blue, 80))
    strategy.entry("Buy Doji", strategy.long)  // Buy signal for Doji breakout

// Check for Hammer breakout
if isHammer(open, high, low, close) and ta.crossover(close, high[1])
    start_price_pattern := low[1]  // Low of the breakout Hammer
    end_price_pattern := recent_high  // The most recent high in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = end_price_pattern, bottom = start_price_pattern, border_color = color.new(color.blue, 0), bgcolor = color.new(color.blue, 80))
    strategy.entry("Buy Hammer", strategy.long)  // Buy signal for Hammer breakout

// Check for Pin Bar breakout
if isPinBar(open, high, low, close) and ta.crossover(close, high[1])
    start_price_pattern := low[1]  // Low of the breakout Pin Bar
    end_price_pattern := recent_high  // The most recent high in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = end_price_pattern, bottom = start_price_pattern, border_color = color.new(color.blue, 0), bgcolor = color.new(color.blue, 80))
    strategy.entry("Buy Pin Bar", strategy.long)  // Buy signal for Pin Bar breakout

// Check for bearish Doji breakout
if isDoji(open, high, low, close) and ta.crossunder(close, low[1])
    start_price_pattern := high[1]  // High of the breakdown Doji
    end_price_pattern := recent_low  // The most recent low in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = start_price_pattern, bottom = end_price_pattern, border_color = color.new(color.orange, 0), bgcolor = color.new(color.orange, 80))
    strategy.entry("Sell Doji", strategy.short)  // Sell signal for Doji breakdown

// Check for bearish Hammer breakout
if isHammer(open, high, low, close) and ta.crossunder(close, low[1])
    start_price_pattern := high[1]  // High of the breakdown Hammer
    end_price_pattern := recent_low  // The most recent low in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = start_price_pattern, bottom = end_price_pattern, border_color = color.new(color.orange, 0), bgcolor = color.new(color.orange, 80))
    strategy.entry("Sell Hammer", strategy.short)  // Sell signal for Hammer breakdown

// Check for bearish Pin Bar breakout
if isPinBar(open, high, low, close) and ta.crossunder(close, low[1])
    start_price_pattern := high[1]  // High of the breakdown Pin Bar
    end_price_pattern := recent_low  // The most recent low in the lookback period
    box.new(left = bar_index[1], right = bar_index, top = start_price_pattern, bottom = end_price_pattern, border_color = color.new(color.orange, 0), bgcolor = color.new(color.orange, 80))
    strategy.entry("Sell Pin Bar", strategy.short)  // Sell signal for Pin Bar breakdown

// Optional: Plot shapes for the green sequence of candles
plotshape(series=is_first_green_candle, location=location.belowbar, color=color.green, style=shape.labelup, text="1st Green")
plotshape(series=breakout_green_candle, location=location.belowbar, color=color.blue, style=shape.labelup, text="Breakout")
plotshape(series=second_green_candle, location=location.belowbar, color=color.orange, style=shape.labelup, text="2nd Green")

// Optional: Plot shapes for the red sequence of candles
plotshape(series=is_first_red_candle, location=location.abovebar, color=color.red, style=shape.labeldown, text="1st Red")
plotshape(series=breakdown_red_candle, location=location.abovebar, color=color.blue, style=shape.labeldown, text="Breakdown")
plotshape(series=second_red_candle, location=location.abovebar, color=color.orange, style=shape.labeldown, text="2nd Red")