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

Estrategia de negociación cuantitativa basada en patrones de inversión en los niveles de soporte y resistencia

El autor:¿ Qué pasa?, Fecha: 2024-06-07 16:45:09
Las etiquetas:

img

Resumen general

Esta estrategia se basa en patrones de reversión (martillo, engulfing y doji) y niveles de soporte y resistencia en el análisis técnico, operando en un gráfico de 1 hora.

La idea principal de la estrategia es entrar en una posición larga cuando un patrón de reversión alcista (como un martillo, engulfamiento alcista o doji) aparece cerca de un nivel de soporte, y entrar en una posición corta cuando un patrón de reversión bajista (como un martillo, engulfamiento bajista o doji) aparece cerca de un nivel de resistencia.

Estrategia lógica

  1. Calcular el mínimo más bajo y el máximo máximo dentro del período de retroceso especificado utilizando las funciones ta.lowest() y ta.highest() para determinar los niveles de soporte y resistencia.
  2. Compruebe si el candelabro actual forma un martillo, un patrón de engulfamiento o un doji.
  3. Si aparece un patrón de reversión alcista cerca de un nivel de soporte, ingrese una posición larga; si aparece un patrón de reversión bajista cerca de un nivel de resistencia, ingrese una posición corta.
  4. Establecer el precio de toma de ganancias en un 3% por encima del precio de entrada y el precio de stop loss en un 1% por debajo del precio de entrada.
  5. Cierre la posición cuando el precio alcance el nivel de toma de ganancias o stop loss.

Ventajas estratégicas

  1. Combina patrones de reversión y niveles clave de soporte y resistencia, mejorando la confiabilidad de las señales comerciales.
  2. Establece niveles claros de toma de ganancias y stop loss, controlando eficazmente el riesgo.
  3. Adecuado tanto para los mercados de tendencias como para los de variación, captando oportunidades potenciales de reversión.
  4. Código sencillo y fácil de entender, que facilita la implementación.

Riesgos estratégicos

  1. En los mercados de los rangos, las señales de reversión frecuentes pueden conducir a un exceso de operaciones y a pérdidas de comisiones.
  2. La identificación de los niveles de soporte y resistencia depende de la elección del período de observación, y los diferentes períodos de observación pueden dar lugar a resultados diferentes.
  3. La fiabilidad de los patrones de reversión no es absoluta, y las señales falsas pueden resultar en pérdidas.

Soluciones:

  1. Ajustar los parámetros y las condiciones de confirmación de los patrones de inversión para reducir las señales falsas.
  2. Incorporar otros indicadores técnicos o indicadores del sentimiento del mercado para mejorar la fiabilidad de la señal.
  3. Ajustar adecuadamente los niveles de toma de ganancias y stop loss para adaptarse a las diferentes condiciones del mercado.

Direcciones para la optimización de la estrategia

  1. Introducir indicadores de volumen para confirmar la validez de los patrones de reversión.
  2. Considere los niveles de soporte y resistencia de múltiples marcos de tiempo para mejorar la precisión de los niveles de soporte y resistencia.
  3. Combinar indicadores de tendencia, como las medias móviles, para operar en la dirección de la tendencia y evitar operaciones contrarias a la tendencia.
  4. Optimizar los niveles de toma de ganancias y stop loss ajustándolos dinámicamente en función de la volatilidad del mercado para lograr mejores ratios riesgo-beneficio.

Resumen de las actividades

Esta estrategia captura oportunidades comerciales potenciales mediante la identificación de patrones de reversión cerca de los niveles de soporte y resistencia. Es simple de usar y aplicable a diferentes entornos de mercado. Sin embargo, el éxito de la estrategia depende de la identificación precisa de los patrones de reversión y los niveles de soporte y resistencia. Al optimizar las condiciones de confirmación de las señales comerciales, incorporar otros indicadores técnicos y ajustar dinámicamente los niveles de toma de ganancias y stop loss, el rendimiento de la estrategia puede mejorarse aún más.


/*backtest
start: 2024-05-07 00:00:00
end: 2024-06-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Kingcoinmilioner

//@version=5
strategy("Reversal Patterns at Support and Resistance", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Parameters
support_resistance_lookback = input.int(50, title="Support/Resistance Lookback Period")
reversal_tolerance = input.float(0.01, title="Reversal Tolerance (percent)", step=0.01) / 100
take_profit_percent = input.float(3, title="Take Profit (%)") / 100
stop_loss_percent = input.float(1, title="Stop Loss (%)") / 100

// Functions to identify key support and resistance levels
findSupport() =>
    ta.lowest(low, support_resistance_lookback)

findResistance() =>
    ta.highest(high, support_resistance_lookback)

// Identify reversal patterns
isHammer() =>
    body = math.abs(close - open)
    lowerWick = open > close ? (low < close ? close - low : open - low) : (low < open ? open - low : close - low)
    upperWick = high - math.max(open, close)
    lowerWick > body * 2 and upperWick < body

isEngulfing() =>
    (close[1] < open[1] and close > open and close > open[1] and open < close[1]) 
    (close[1] > open[1] and close < open and close < open[1] and open > close[1])

isDoji() =>
    math.abs(open - close) <= (high - low) * 0.1

// Identify support and resistance levels
support = findSupport()
resistance = findResistance()

// Check for reversal patterns at support and resistance
hammerAtSupport = isHammer() and (low <= support * (1 + reversal_tolerance))
engulfingAtSupport = isEngulfing() and (low <= support * (1 + reversal_tolerance))
dojiAtSupport = isDoji() and (low <= support * (1 + reversal_tolerance))

hammerAtResistance = isHammer() and (high >= resistance * (1 - reversal_tolerance))
engulfingAtResistance = isEngulfing() and (high >= resistance * (1 - reversal_tolerance))
dojiAtResistance = isDoji() and (high >= resistance * (1 - reversal_tolerance))

// Trading logic
if (hammerAtSupport or engulfingAtSupport or dojiAtSupport)
    strategy.entry("Long", strategy.long)
    stop_level = low * (1 - stop_loss_percent)
    take_profit_level = close * (1 + take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", stop=stop_level, limit=take_profit_level)

if (hammerAtResistance or engulfingAtResistance or dojiAtResistance)
    strategy.entry("Short", strategy.short)
    stop_level = high * (1 + stop_loss_percent)
    take_profit_level = close * (1 - take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", stop=stop_level, limit=take_profit_level)

// Plot support and resistance levels for visualization
plot(support, color=color.green, linewidth=1, title="Support Level")
plot(resistance, color=color.red, linewidth=1, title="Resistance Level")

// Plot reversal patterns on the chart for visualization
plotshape(series=hammerAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer at Support")
plotshape(series=engulfingAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Engulfing at Support")
plotshape(series=dojiAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Doji at Support")

plotshape(series=hammerAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Hammer at Resistance")
plotshape(series=engulfingAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulfing at Resistance")
plotshape(series=dojiAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Doji at Resistance")


Más.