En la carga de los recursos... Cargando...

Estrategia de negociación de marcos de tiempo múltiples que combina patrones armónicos y Williams % R

El autor:¿ Qué pasa?, Fecha: 2025-01-17 16:19:15
Las etiquetas:El WPRSLTPRREl eje

 Multi-Timeframe Trading Strategy Combining Harmonic Patterns and Williams %R

Resumen general

Esta estrategia es un sistema de negociación avanzado que combina patrones armónicos con el indicador Williams Percent Range (WPR). Identifica formaciones armónicas (como patrones de Gartley, Bat, Crab y Butterfly) en el mercado y utiliza los niveles de sobrecompra / sobreventa de WPR para determinar los puntos de entrada y salida del comercio. La estrategia emplea múltiples mecanismos de confirmación, utilizando la sinergia de indicadores técnicos para mejorar la precisión y fiabilidad del comercio.

Principios de estrategia

La lógica central incluye varios componentes clave: Reconocimiento de patrones armónicos: utiliza puntos de pivote de precios para identificar posibles formaciones armónicas mediante el análisis de las relaciones entre altos y bajos. 2. Cálculo de Williams %R: emplea un período personalizado para calcular el WPR, analizando las relaciones entre los precios altos, bajos y de cierre para determinar las condiciones del mercado. Condiciones de entrada: - Entrada larga: Cuando aparece un patrón armónico alcista y el WPR está en territorio de sobreventa - Entrada corta: Cuando aparece un patrón armónico bajista y el WPR está en territorio sobrecomprado 4. Gestión de riesgos: Implementa un stop-loss dinámico basado en los mínimos/ máximos recientes y establece los niveles de toma de ganancias utilizando las proporciones riesgo-recompensa.

Ventajas estratégicas

  1. Análisis multidimensional: Combina el análisis de patrones con indicadores de impulso para señales comerciales más confiables.
  2. Control de riesgos robusto: utiliza configuraciones dinámicas de stop-loss y take-profit basadas en el riesgo-recompensa para controlar eficazmente el riesgo por operación.
  3. Alta adaptabilidad: puede adaptarse a diferentes entornos e instrumentos del mercado mediante la optimización de parámetros.
  4. Mecanismo de confirmación de la señal: reduce las señales falsas mediante la confirmación doble utilizando patrones armónicos y WPR.

Riesgos estratégicos

  1. Riesgo de reconocimiento de patrones: el reconocimiento de patrones armónicos simplificados puede conducir a una identificación errónea de algunas formaciones.
  2. Sensibilidad de parámetros: múltiples parámetros requieren una optimización cuidadosa, ya que la configuración inadecuada puede afectar el rendimiento de la estrategia.
  3. Dependencia del entorno del mercado: Puede tener un rendimiento inferior en mercados altamente volátiles o variables.
  4. Lag de señal: las señales basadas en indicadores técnicos pueden tener un retraso inherente.

Direcciones para la optimización de la estrategia

  1. Reconocimiento de patrones mejorado:
    • Añadir una validación más estricta de la relación armónica
    • Incorporar el análisis de la estructura de precios para una mejor identificación de patrones
  2. Filtración de la señal:
    • Añadir filtros de tendencia
    • Considerar los indicadores de volatilidad para la adaptación al entorno del mercado
  3. Optimización de la gestión de riesgos:
    • Implementar ajustes dinámicos de la relación riesgo-beneficio
    • Añadir el tamaño de las posiciones basado en la volatilidad

Resumen de las actividades

Esta estrategia construye un sistema de negociación integral mediante la combinación de patrones armónicos con el indicador Williams %R. Sus fortalezas se encuentran en su enfoque de análisis multidimensional y mecanismos robustos de control de riesgos, aunque se debe prestar atención a la optimización de parámetros y la adaptación al entorno del mercado.


/*backtest
start: 2025-01-09 00:00:00
end: 2025-01-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("Harmonic Pattern with WPR Backtest", overlay=true)

// === Inputs ===
patternLength = input.int(5, title="Pattern Length")
wprLength = input.int(14, title="WPR Length")
wprOverbought = input.float(-20, title="WPR Overbought Level")
wprOversold = input.float(-80, title="WPR Oversold Level")
riskRewardMultiplier = input.float(0.618, title="Take-Profit Risk/Reward Multiplier")
stopLossBuffer = input.float(0.005, title="Stop-Loss Buffer (%)")

// === Manual Calculation of William Percent Range (WPR) ===
highestHigh = ta.highest(high, wprLength)
lowestLow = ta.lowest(low, wprLength)
wpr = ((highestHigh - close) / (highestHigh - lowestLow)) * -100

// === Harmonic Pattern Detection (Simplified Approximation) ===
// Calculate price pivots
pivotHigh = ta.pivothigh(high, patternLength, patternLength)
pivotLow = ta.pivotlow(low, patternLength, patternLength)

// Detect Bullish and Bearish Harmonic Patterns
bullishPattern = pivotLow and close > ta.lowest(close, patternLength)  // Simplified detection for bullish patterns
bearishPattern = pivotHigh and close < ta.highest(close, patternLength)  // Simplified detection for bearish patterns

// === Entry Conditions ===
longCondition = bullishPattern and wpr < wprOversold
shortCondition = bearishPattern and wpr > wprOverbought

// === Stop-Loss and Take-Profit Levels ===
longEntryPrice = close
longSL = ta.valuewhen(longCondition, low, 0) * (1 - stopLossBuffer)  // Stop-loss for long trades
longTP = longEntryPrice * (1 + riskRewardMultiplier)  // Take-profit for long trades

shortEntryPrice = close
shortSL = ta.valuewhen(shortCondition, high, 0) * (1 + stopLossBuffer)  // Stop-loss for short trades
shortTP = shortEntryPrice * (1 - riskRewardMultiplier)  // Take-profit for short trades

// === Backtesting Logic ===
// Long Trade
if longCondition
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", "Long", stop=longSL, limit=longTP)

// Short Trade
if shortCondition
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", "Short", stop=shortSL, limit=shortTP)

// === Visualization ===
bgcolor(longCondition ? color.new(color.green, 90) : na, title="Long Entry Signal")
bgcolor(shortCondition ? color.new(color.red, 90) : na, title="Short Entry Signal")


Relacionados

Más.