Cette stratégie est un système de trading adaptatif qui combine l'indicateur ZigZag avec l'indicateur Aroon. L'indicateur ZigZag filtre le bruit du marché et identifie les mouvements de prix significatifs, tandis que l'indicateur Aroon confirme la force de la tendance et les points d'inversion potentiels.
La logique de base de la stratégie repose sur les éléments clés suivants: L'indicateur ZigZag filtre les fluctuations à court terme en définissant un paramètre de profondeur (zigzagDepth), ne retenant que les mouvements de prix statistiquement significatifs. L'indicateur Aroon génère des lignes Aroon Up et Aroon Down en calculant l'intervalle de temps entre les prix les plus élevés et les plus bas (AroonLength). Les signaux d'entrée sont déclenchés par deux conditions simultanées: - Les positions longues sont ouvertes quand Aroon Up traverse Aroon Down et ZigZag montre une tendance à la hausse - Les positions courtes sont ouvertes lorsque Aroon Down traverse Aroon Up et ZigZag montre une tendance à la baisse Les signaux de sortie sont déclenchés par des croisements d'indicateurs d'Aroon: - Les positions longues sont fermées quand Aroon Down traverse Aroon Up. - Les positions courtes sont fermées quand Aroon Up traverse Aroon Down.
La stratégie construit un système complet de suivi des tendances grâce à la combinaison des indicateurs ZigZag et Aroon. Ses atouts résident dans son adaptabilité et son mécanisme de confirmation double, tandis que l'attention doit être accordée à la sélection des paramètres et aux impacts de l'environnement du marché.
/*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")