
La estrategia es un sistema de negociación inteligente que combina los clásicos de análisis técnico de cruce de líneas y la identificación de la forma de la línea K. La estrategia capta con precisión los puntos de inflexión de la tendencia del mercado mediante el análisis de la relación entre la línea K y la entidad, combinada con la señal de cruce de líneas biuniversales. El sistema no solo observa el movimiento de los precios, sino que también ajusta dinámicamente los parámetros de negociación mediante el cálculo de la amplitud media de las ondas, lo que mejora la adaptabilidad de la estrategia.
La lógica central de la estrategia se divide en dos partes principales:
El módulo de reconocimiento de la forma de la línea K identifica la señal de inversión potencial calculando la relación proporcional de la línea de sombra superior y inferior con la entidad. El sistema establece un parámetro de multiplicador de línea de sombra ajustable (wickMultiplier) y un parámetro de porcentaje de cuerpo (bodyPercentage) para optimizar la calidad de la señal. Cuando la línea K presenta una línea de sombra superior o inferior que cumple con las condiciones, el sistema emite la señal de hacer más o hacer vacío correspondiente.
El sistema de cruzamiento de dos medias lineal utiliza una media móvil simple de 14 y 28 períodos (SMA) como indicador de tendencia. Cuando la mediana corta cruza la mediana larga hacia arriba, el sistema genera una señal múltiple; cuando la mediana corta cruza la mediana larga hacia abajo, el sistema genera una señal de vacío.
La estrategia combina la identificación de formas de K-lineas y el sistema de cruce de líneas uniformes para construir un marco de decisión de transacciones relativamente completo. La estrategia tiene la ventaja de su riguroso mecanismo de selección de señales y la capacidad de ajuste de parámetros flexibles, pero también debe tener en cuenta la optimización de parámetros y la adaptabilidad al entorno del 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)