
Esta es una estrategia de comercio cuantitativa que combina el análisis de la forma con la forma de la línea de referencia. La estrategia permite la automatización de operaciones de bajo riesgo y alta eficiencia mediante la detección de los puntos de inflexión importantes en el gráfico de precios y las formas de la barra que representan una fuerte reversión.
La estrategia se basa en un análisis detallado de la movilidad de los precios, combinado con un análisis de forma y un análisis de línea de ruta, y establece una lógica de entrada clara y una lógica de parada de pérdidas que permite un seguimiento eficaz de las tendencias.
Concretamente, su condición de entrada es: el precio más alto que atraviesa las dos primeras líneas K y se produce una ruptura de la forma de punto alto preliminar o una forma de absorción múltiple o una de las formas de cabeza. Esta combinación de condiciones permite confirmar eficazmente la oportunidad de tomar ventajas.
En cuanto a las formas de juicio, la estrategia combina el uso de líneas de clasificación para identificar los puntos de inflexión importantes, y los tres tipos típicos de formas de cubo para juzgar el cambio de tendencia. Para juzgar las formas de juicio de los puntos de inflexión importantes se utiliza una teoría de clasificación más amplia, mientras que para juzgar formas como el polígono, el engullido de la cabeza y el cubo se utilizan algoritmos más avanzados.
En la implementación concreta, la estrategia se escribe usando el script de pin. La lógica de implementación de su clasificación de detección es la clasificación superior cuando el precio más alto de la línea K actual es igual al precio más alto de las 3 líneas K anteriores. El principio de juicio de la clasificación inferior es similar. La forma de detección de tipo de absorción se basa en un juicio estricto de la relación entre el precio de apertura y el precio de cierre.
Las principales ventajas de esta estrategia son:
La estrategia aún tiene ciertos riesgos a tener en cuenta:
Para los riesgos mencionados anteriormente, se puede controlar mediante la optimización de las estrategias de stop loss, la introducción de filtros de tendencia, el uso de herramientas cuantitativas para verificar los parámetros de la estrategia, etc.
La estrategia puede optimizarse aún más en:
Con estas optimizaciones, se puede mejorar aún más la estabilidad y la rentabilidad de la estrategia.
Este artículo describe en detalle una estrategia de comercio cuantitativa basada en líneas de clasificación y formas de cubo. La estrategia es precisa, fácil de implementar, capaz de capturar de manera efectiva las tendencias de precios y de automatizar las operaciones. Después de la optimización y la verificación continuas, su rendimiento se mejorará aún más, y vale la pena que los inversores o comerciantes estudien y apliquen.
/*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)