Estrategia de trading cuantitativo basada en patrones de reversión de soporte y resistencia


Fecha de creación: 2024-06-07 16:45:09 Última modificación: 2024-06-07 16:45:09
Copiar: 3 Número de Visitas: 611
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo basada en patrones de reversión de soporte y resistencia

Descripción general

La estrategia se basa en las formas de reversión en el análisis técnico (línea de encabezado, forma de absorción y estrellas cruzadas), así como en los puntos de soporte y resistencia, para operar en el gráfico de 1 hora. La estrategia realiza operaciones mediante la identificación de posibles puntos de reversión del mercado y los niveles de parada y pérdida previstos.

La idea principal de esta estrategia es abrir más posiciones cuando se presentan formas de reversión bajista cerca de los niveles de soporte (como líneas de cabeza, formas de absorción bajista o estrellas cruzadas) y abrir posiciones abiertas cuando se presentan formas de reversión bajista cerca de los niveles de resistencia (como líneas de cabeza, formas de absorción bajista o estrellas cruzadas). Al mismo tiempo, configure niveles de parada y de pérdida para controlar el riesgo y bloquear las ganancias.

Principio de estrategia

  1. Calcule el precio mínimo y el precio máximo durante el período de retorno especificado mediante las funciones ta.lowest() y ta.highest(), respectivamente, para determinar el soporte y la resistencia.
  2. Determina si el mapa actual está formando una línea de encabezado, una forma de tragamonedas o una estrella cruzada.
  3. Si se produce una reversión de la tendencia bajista cerca de los niveles de soporte, abra más posiciones; si se produce una reversión de la tendencia bajista cerca de los niveles de resistencia, abra posiciones vacías.
  4. Establezca el precio de parada en 3% del precio de apertura y el precio de parada en 1% del precio de apertura.
  5. Cuando el precio alcanza un nivel de stop-loss o stop-loss, se cierra la posición.

Ventajas estratégicas

  1. La combinación de la forma inversa y la resistencia al soporte clave mejora la fiabilidad de la señal de negociación.
  2. Establecer niveles claros de paradas y pérdidas para controlar el riesgo de manera efectiva.
  3. Se aplica a mercados con tendencias y convulsiones para capturar oportunidades potenciales de reversión.
  4. El código es sencillo, fácil de entender e implementar.

Riesgo estratégico

  1. En un mercado convulso, las señales de reversión son frecuentes y pueden conducir a la pérdida de transacciones excesivas y comisiones.
  2. La determinación de la posición de soporte y resistencia depende de la elección del período de retorno, y diferentes períodos de retorno pueden dar lugar a diferentes resultados.
  3. La fiabilidad de la forma inversa no es absoluta, y las señales falsas pueden causar pérdidas.

La solución:

  1. Reducción de señales falsas mediante ajuste de los parámetros y condiciones de confirmación de la forma inversa.
  2. En combinación con otros indicadores técnicos o de sentimiento del mercado, mejora la fiabilidad de la señal.
  3. Ajuste apropiadamente los niveles de stop y stop loss para responder a las diferentes condiciones del mercado.

Dirección de optimización de la estrategia

  1. Introducir indicadores de volumen de transacciones para confirmar la efectividad de las formas de inversión. Las formas de inversión de alto volumen de transacciones pueden ser más confiables.
  2. Tener en cuenta las resistencias de soporte de varios marcos de tiempo para mejorar la precisión de las resistencias de soporte.
  3. Combine indicadores de tendencia, como las medias móviles, para negociar en la dirección de la tendencia y evitar el comercio en contra.
  4. Optimización de los niveles de stop y stop loss, ajustados a la dinámica de la volatilidad del mercado para obtener una mejor relación de riesgo-rendimiento.

Resumir

La estrategia capta oportunidades de negociación potenciales mediante la identificación de las formas de reversión cerca de los niveles de soporte y resistencia. Es simple y fácil de usar y se aplica a diferentes entornos de mercado. Sin embargo, el éxito de la estrategia depende de un juicio preciso de las formas de reversión y los niveles de resistencia de soporte.

Código Fuente de la Estrategia
/*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")