Estrategia de negociación cuantitativa basada en fractales y patrones

El autor:¿ Qué pasa?, Fecha: 2024-02-19 14:32:45
Las etiquetas:

img

Resumen general

Este artículo presenta una estrategia de negociación cuantitativa que combina el análisis fractal y los patrones de candlestick.

Principio de la estrategia

Esta estrategia se basa en un análisis detallado de la acción del precio, utilizando una combinación de análisis fractal y reconocimiento de patrones de velas para definir una lógica de entrada y stop loss clara para capturar la tendencia.

Específicamente, su condición de entrada es: el precio se rompe por encima del máximo de las 2 barras anteriores, y se produce una ruptura fractal o un engulfamiento alcista o un patrón de martillo.

Para la detección de patrones, esta estrategia utiliza la teoría fractal comúnmente utilizada para identificar puntos clave de inversión, así como algoritmos para detectar los 3 patrones clásicos de inversión de velas.

La codificación se realiza en la escritura Pine. El alto/bajo fractal se identifica cuando el precio hace un nuevo alto/bajo de 3 bares, y se utilizan reglas estrictas sobre precios de apertura/cierre para los patrones de engulfing.

Ventajas

Las principales ventajas de esta estrategia:

  1. Una señal precisa que combina fractales y patrones
  2. Lógicas claras de entrada y parada de pérdidas
  3. Las teorías maduras evitan el sobreajuste
  4. El guión de pino permite backtesting

Los riesgos

Todavía hay riesgos a tener en cuenta:

  1. Subjetividad en la detección de fractales y patrones
  2. Se trata de las operaciones que pueden generar pérdidas consecutivas
  3. El tamaño de las pérdidas de parada requiere un ajuste para la negociación de alta frecuencia

Métodos como paradas optimizadas, filtrado de tendencias y análisis de marcha hacia adelante pueden ayudar a controlar los riesgos anteriores.

Mejoras

Áreas de mejora:

  1. Parámetro de patrón de candeleros afinado para la robustez
  2. Añadir filtro de sesgo de tendencia para evitar las flechas
  3. Introducir el aprendizaje automático para la optimización automática de parámetros

Estas mejoras reforzarán aún más la estabilidad y la rentabilidad de la estrategia.

Conclusión

Este artículo cubre a fondo una estrategia de negociación de acción de precios que combina fractales y patrones de velas. Con una señalización precisa, una implementación fácil y un seguimiento de tendencia efectivo, esta estrategia puede beneficiar enormemente tanto a los operadores sistemáticos como a los operadores discrecionales. Las mejoras continuas y la verificación elevarán aún más su rendimiento para el comercio práctico.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Fractal & Pattern Entry/Exit Strategy", overlay=true)

// Fractal calculation
fractalHigh = high == highest(3)
fractalLow = low == lowest(3)

// Pattern detection
bullishEngulfing = open < close[1] and close > open[1] and close > open + (open[1] - close[1]) * 2 and low < min(open, close) and high > max(open, close) and open[1] > close[1]
bearishEngulfing = open > close[1] and close < open[1] and open > close + (close[1] - open[1]) * 2 and high > max(open, close) and low < min(open, close) and open[1] < close[1]
hammer = open < close and close > (high + low + open * 2) / 4 and close - open > (high - low) * 0.6 and high - close < (high - low) * 0.1 and open - low < (high - low) * 0.1
hangingMan = open > close and open < (high + low + close * 2) / 4 and open - close > (high - low) * 0.6 and high - open < (high - low) * 0.1 and close - low < (high - low) * 0.1

// Entry condition
longCondition = crossover(close, highest(2)[1]) and (fractalHigh or bullishEngulfing or hammer)
shortCondition = crossunder(close, lowest(2)[1]) and (fractalLow or bearishEngulfing or hangingMan)

// Exit condition
exitLongCondition = crossunder(close, lowest(2)[1])
exitShortCondition = crossover(close, highest(2)[1])

// Entry and exit orders
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

// Plot fractals
plotshape(fractalHigh, title="Fractal High", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(fractalLow, title="Fractal Low", style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// Plot patterns
plotshape(bullishEngulfing, title="Bullish Engulfing", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearishEngulfing, title="Bearish Engulfing", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)
plotshape(hammer, title="Hammer", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(hangingMan, title="Hanging Man", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)


Más.