Este artículo presenta una estrategia de negociación cuantitativa que combina el análisis fractal y los patrones de candlestick.
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.
Las principales ventajas de esta estrategia:
Todavía hay riesgos a tener en cuenta:
Métodos como paradas optimizadas, filtrado de tendencias y análisis de marcha hacia adelante pueden ayudar a controlar los riesgos anteriores.
Áreas de mejora:
Estas mejoras reforzarán aún más la estabilidad y la rentabilidad de la estrategia.
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)