
Strategi ini adalah sistem perdagangan mengikuti tren dan pembalikan tingkat lanjut yang didasarkan pada level Fibonacci retracement. Hal ini dilakukan dengan mengidentifikasi harga tertinggi dan terendah secara dinamis, secara otomatis menghitung dan memetakan tujuh level Fibonacci retracement utama (0%, 23,6%, 38,2%, 50%, 61,8%, 78,6% dan 100%). Mengidentifikasi level support dan resistance yang potensial. Sistem ini mengadopsi mekanisme perdagangan dua arah, yang dapat menangkap peluang pembelian dalam tren naik dan peluang penjualan pendek dalam tren turun.
Logika inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:
Strategi ini membangun sistem perdagangan yang komprehensif dengan menggabungkan teori Fibonacci retracement klasik dengan teknik perdagangan kuantitatif modern. Keuntungannya adalah dapat secara otomatis mengidentifikasi tingkat harga utama dan memberikan sinyal perdagangan yang jelas, tetapi perlu juga memperhatikan dampak lingkungan pasar terhadap kinerja strategi. Melalui arah pengoptimalan yang direkomendasikan, stabilitas dan profitabilitas strategi diharapkan dapat lebih ditingkatkan.
/*backtest
start: 2024-01-06 00:00:00
end: 2025-01-05 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Fibonacci Retracement Strategy for Crypto", overlay=true)
// Input parameters
lookback = input.int(50, title="Lookback Period", minval=1)
plotLevels = input.bool(true, title="Plot Fibonacci Levels?")
compactLines = input.bool(true, title="Compact Fibonacci Lines?")
// Calculate highest high and lowest low for the lookback period
highestHigh = ta.highest(high, lookback)
lowestLow = ta.lowest(low, lookback)
// Fibonacci retracement levels
diff = highestHigh - lowestLow
level0 = highestHigh
level23_6 = highestHigh - diff * 0.236
level38_2 = highestHigh - diff * 0.382
level50 = highestHigh - diff * 0.5
level61_8 = highestHigh - diff * 0.618
level78_6 = highestHigh - diff * 0.786
level100 = lowestLow
// Plot Fibonacci levels (compact mode to make lines shorter)
// if plotLevels
// lineStyle = compactLines ? line.style_dashed : line.style_solid
// line.new(bar_index[lookback], level0, bar_index, level0, color=color.green, width=1, style=lineStyle)
// line.new(bar_index[lookback], level23_6, bar_index, level23_6, color=color.blue, width=1, style=lineStyle)
// line.new(bar_index[lookback], level38_2, bar_index, level38_2, color=color.blue, width=1, style=lineStyle)
// line.new(bar_index[lookback], level50, bar_index, level50, color=color.orange, width=1, style=lineStyle)
// line.new(bar_index[lookback], level61_8, bar_index, level61_8, color=color.red, width=1, style=lineStyle)
// line.new(bar_index[lookback], level78_6, bar_index, level78_6, color=color.red, width=1, style=lineStyle)
// line.new(bar_index[lookback], level100, bar_index, level100, color=color.green, width=1, style=lineStyle)
// Long trade: Buy when price crosses above 61.8% retracement
longCondition = ta.crossover(close, level61_8)
if longCondition
strategy.entry("Long", strategy.long, alert_message="Price bounced off Fibonacci level - Enter Long")
// Short trade: Sell when price crosses below 38.2% retracement
shortCondition = ta.crossunder(close, level38_2)
if shortCondition
strategy.entry("Short", strategy.short, alert_message="Price crossed below Fibonacci level - Enter Short")
// Exit conditions
exitLong = close >= level23_6
if exitLong
strategy.close("Long", alert_message="Price reached 23.6% Fibonacci level - Exit Long")
exitShort = close <= level78_6
if exitShort
strategy.close("Short", alert_message="Price reached 78.6% Fibonacci level - Exit Short")