
La estrategia es un sistema de negociación adaptativo que combina el indicador ZigZag y el indicador Aroon. El indicador ZigZag se utiliza para filtrar el ruido del mercado e identificar las fluctuaciones importantes en los precios, mientras que el indicador Aroon se utiliza para confirmar la fuerza de la tendencia y los posibles puntos de inflexión. La estrategia utiliza la sinergia de estos dos indicadores para capturar los puntos de inflexión del mercado a tiempo, mientras se mantiene sensible a las tendencias.
La lógica central de la estrategia se basa en los siguientes elementos clave:
La estrategia, a través de la combinación de los indicadores ZigZag y Aroon, construye un sistema de seguimiento de tendencias más completo. Las ventajas de la estrategia residen en su adaptabilidad y en su mecanismo de doble confirmación, pero también en la necesidad de tener en cuenta el impacto de la selección de parámetros y el entorno de mercado en el rendimiento de la estrategia. A través de la optimización y la mejora continuas, la estrategia tiene posibilidades de obtener un rendimiento estable en el comercio real.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Zig Zag + Aroon Strategy", overlay=true)
// Zig Zag parameters
zigzagDepth = input(5, title="Zig Zag Depth")
// Aroon parameters
aroonLength = input(14, title="Aroon Length")
// Zig Zag logic
var float lastZigZag = na
var float lastZigZagHigh = na
var float lastZigZagLow = na
var int direction = 0 // 1 for up, -1 for down
// Calculate Zig Zag
if (not na(high) and high >= ta.highest(high, zigzagDepth) and direction != 1)
lastZigZag := high
lastZigZagHigh := high
direction := 1
if (not na(low) and low <= ta.lowest(low, zigzagDepth) and direction != -1)
lastZigZag := low
lastZigZagLow := low
direction := -1
// Aroon calculation
highestHigh = ta.highest(high, aroonLength)
lowestLow = ta.lowest(low, aroonLength)
aroonUp = (aroonLength - (bar_index - ta.highestbars(high, aroonLength))) / aroonLength * 100
aroonDown = (aroonLength - (bar_index - ta.lowestbars(low, aroonLength))) / aroonLength * 100
// Long entry condition
longCondition = (ta.crossover(aroonUp, aroonDown)) and (lastZigZag == lastZigZagHigh)
if (longCondition)
strategy.entry("Long", strategy.long)
// Short entry condition
shortCondition = (ta.crossover(aroonDown, aroonUp)) and (lastZigZag == lastZigZagLow)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Exit conditions
if (ta.crossover(aroonDown, aroonUp) and strategy.position_size > 0)
strategy.close("Long")
if (ta.crossover(aroonUp, aroonDown) and strategy.position_size < 0)
strategy.close("Short")
// Plot Zig Zag
plot(lastZigZag, color=color.blue, title="Zig Zag", linewidth=2, style=plot.style_stepline)
// Plot Aroon
hline(70, "Aroon Up Overbought", color=color.red)
hline(30, "Aroon Down Oversold", color=color.green)
plot(aroonUp, color=color.green, title="Aroon Up")
plot(aroonDown, color=color.red, title="Aroon Down")