
Strategi ini adalah sistem perdagangan adaptif yang menggabungkan indikator ZigZag dan Aroon. Indikator ZigZag digunakan untuk menyaring kebisingan pasar dan mengidentifikasi fluktuasi harga yang penting, sedangkan indikator Aroon digunakan untuk mengkonfirmasi kekuatan tren dan potensi titik balik. Strategi ini bekerja dengan sinergi kedua indikator ini untuk menangkap titik balik pasar tepat waktu sambil tetap sensitif terhadap tren.
Logika inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:
Strategi ini menggunakan kombinasi indikator ZigZag dan Aroon untuk membangun sistem pelacakan tren yang lebih lengkap. Keunggulan strategi adalah kemampuan adaptasi dan mekanisme double confirmation, tetapi juga perlu memperhatikan pilihan parameter dan pengaruh lingkungan pasar terhadap kinerja strategi. Dengan terus-menerus mengoptimalkan dan memperbaiki, strategi ini diharapkan untuk mendapatkan kinerja yang stabil dalam perdagangan nyata.
/*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")