Esta estrategia es un sistema de negociación inteligente que combina herramientas de análisis técnico clásico, incluyendo cruces de promedio móvil y reconocimiento de patrones de velas. La estrategia identifica puntos de inflexión potenciales del mercado mediante el análisis de la relación entre las sombras y los cuerpos de las velas, al tiempo que incorpora señales de cruces de promedio móvil duales. El sistema no solo se centra en las tendencias de precios, sino que también calcula rangos promedio para ajustar dinámicamente los parámetros de negociación para una mejor adaptabilidad.
La lógica central consiste en dos componentes principales:
El módulo de reconocimiento de patrones de candelabro identifica señales de reversión potenciales mediante el cálculo de la relación entre sombras y cuerpos. El sistema incluye parámetros ajustables para el multiplicador de sombras (wickMultiplier) y el porcentaje de cuerpo (bodyPercentage) para optimizar la calidad de la señal. Cuando un candelabro muestra sombras largas superiores o inferiores calificadas, el sistema genera señales largas o cortas correspondientes.
El sistema dual de cruce de medias móviles utiliza medias móviles simples (SMA) de 14 períodos y 28 períodos como indicadores de tendencia.
Esta estrategia construye un marco de decisión comercial relativamente completo al combinar el reconocimiento de patrones de velas con sistemas de cruce de promedios móviles. Sus fortalezas se encuentran en mecanismos estrictos de filtrado de señales y capacidades flexibles de ajuste de parámetros, mientras que se debe prestar atención a la optimización de parámetros y adaptabilidad al entorno del mercado. A través de la optimización y el refinamiento continuos, la estrategia muestra potencial para mantener un rendimiento estable en varias condiciones de mercado.
/*backtest start: 2024-10-28 00:00:00 end: 2024-11-27 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 indicator("Wick Reversal Setup", overlay=true) // Input parameters wickMultiplier = input.float(3.5, title="Wick Multiplier", minval=0.5, maxval=20) bodyPercentage = input.float(0.25, title="Body Percentage", minval=0.1, maxval=1.0) // Calculate the average range over 50 periods avgRange = ta.sma(high - low, 50) // Define the lengths of wicks and bodies bodyLength = math.abs(close - open) upperWickLength = high - math.max(close, open) lowerWickLength = math.min(close, open) - low totalRange = high - low // Long signal conditions longSignal = (close > open and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (close < open and lowerWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (close == open and close != high and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (open == high and close == high and totalRange >= avgRange) // Short signal conditions shortSignal = (close < open and (high - open) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (close > open and (high - close) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (close == open and close != low and lowerWickLength >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (open == low and close == low and totalRange >= avgRange) // Plot signals plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Long") plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Short") // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Sahaj_Beriwal //@version=5 strategy("My strategy", overlay=true, margin_long=100, margin_short=100) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (longCondition) strategy.entry("L", strategy.long) shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if (shortCondition) strategy.entry("S", strategy.short)