이 전략은 지그자그 지표와 아론 지표를 결합한 적응형 거래 시스템이다. 지그자그 지표는 시장 소음을 필터링하고 중요한 가격 움직임을 식별하며, 아론 지표는 트렌드 강도와 잠재적 인 반전 지점을 확인합니다. 이 두 지표의 시너지 조합을 통해 전략은 트렌드에 민감성을 유지하면서 시장 전환점을 적시에 포착합니다.
이 전략의 핵심 논리는 다음의 핵심 요소에 기초합니다. 1. 지그자그 지표는 심도 매개 변수 (zigzagDepth) 를 설정함으로써 단기 변동을 필터링하여 통계적으로 유의미한 가격 움직임을만 유지합니다. 2. 아론 지표는 최고와 최저 가격 사이의 시간 간격을 계산하여 아론 업 및 아론 다운 라인을 생성합니다. 3. 입력 신호는 두 가지 동시다발적인 조건에 의해 유발됩니다. - Aroon Up가 Aroon Down를 넘어서고 ZigZag가 상승세를 보이는 경우 긴 포지션은 열립니다. - Aroon Down가 Aroon Up를 넘어서고 ZigZag가 하향 추세를 보인다면 짧은 포지션이 열립니다. 4. 출구 신호는 아론 지표의 크로스오버에 의해 유발됩니다. - Aroon Down가 Aroon Up를 넘을 때 긴 포지션은 닫습니다. - Aroon Up가 Aroon Down를 넘을 때
이 전략은 ZigZag 및 Aroon 지표의 조합을 통해 포괄적인 트렌드 추적 시스템을 구축합니다. 이 전략의 강점은 적응력과 이중 확인 메커니즘에 있으며 매개 변수 선택 및 시장 환경에 대한 영향에주의를 기울여야합니다. 지속적인 최적화 및 개선으로 전략은 실제 거래에서 안정적인 성과를 얻을 수 있습니다.
/*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")