Strategi ini menggabungkan indikator Bollinger Bands dan Fibonacci retracement untuk pendekatan multi-indikator. Ini termasuk dalam jenis strategi indikator gabungan yang khas. Bollinger Bands menentukan arah tren dan tingkat Fibonacci mengidentifikasi zona pendukung dan resistensi utama untuk menghasilkan sinyal perdagangan.
Strategi ini didasarkan pada dua indikator utama:
Bollinger Bands
Menghitung band atas, tengah dan bawah. harga yang melanggar di atas band bawah adalah sinyal panjang, dan melanggar di bawah band atas adalah sinyal pendek.
Fibonacci Retracements
Menghitung tingkat retracement 0% dan 100% berdasarkan puncak dan terendah historis.
Logika perdagangan khusus adalah:
Sinyal panjang: Harga melanggar band atas, dan berada di atas 0% dukungan Fibonacci.
Sinyal pendek: Harga pecah di bawah band bawah, dan berada di bawah 100% resistensi Fibonacci.
Keluar adalah di sekitar band tengah untuk mengambil keuntungan atau stop loss.
Risiko dapat dikurangi dengan:
Strategi dapat ditingkatkan dengan:
Mengoptimalkan parameter Bollinger Bands
Menemukan rasio optimal untuk band atas/bawah
Mengoptimalkan periode retracement Fibonacci
Pengujian periode lookback yang berbeda untuk retracements
Kondisi masuk yang meredakan
Mengamati pola candlestick pada istirahat band
Meningkatkan pintu keluar
Mempertimbangkan mekanisme trailing stop
Pengujian parameter spesifik produk
Parameter perlu disetel untuk produk yang berbeda
Strategi ini menggabungkan kekuatan Bollinger Bands dan Fibonacci Retracements untuk sinyal berkualitas tinggi. Namun tantangan seperti optimasi parameter yang sulit ada. Perbaikan dapat dilakukan melalui penyesuaian parameter, meringankan kriteria masuk, meningkatkan keluar dll untuk memperbaiki strategi sambil mempertahankan keunggulan. Penyesuaian terus-menerus berdasarkan hasil backtest juga merupakan kunci untuk ketahanan.
/*backtest start: 2023-09-13 00:00:00 end: 2023-09-20 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands & Fibonacci Strategy", shorttitle="BB & Fib Strategy", overlay=true) // Initialize position variables var bool long_position = false var bool short_position = false // Bollinger Bands settings length = input.int(20, title="Bollinger Bands Length") src = input(close, title="Source") mult = input.float(2.0, title="Standard Deviation Multiplier") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper_band = basis + dev lower_band = basis - dev // Fibonacci retracement levels fib_0 = input.float(0.0, title="Fibonacci 0% Level", minval=-100, maxval=100) / 100 fib_100 = input.float(1.0, title="Fibonacci 100% Level", minval=-100, maxval=100) / 100 // Plotting Bollinger Bands plot(upper_band, color=color.red, title="Upper Bollinger Band") plot(lower_band, color=color.green, title="Lower Bollinger Band") // Calculate Fibonacci levels fib_range = ta.highest(high, 50) - ta.lowest(low, 50) fib_high = ta.highest(high, 50) - fib_range * fib_0 fib_low = ta.lowest(low, 50) + fib_range * fib_100 // Plot Fibonacci retracement levels plot(fib_high, color=color.blue, title="Fibonacci High") plot(fib_low, color=color.orange, title="Fibonacci Low") // Entry conditions long_condition = ta.crossover(close, upper_band) and low > fib_low short_condition = ta.crossunder(close, lower_band) and high < fib_high // Plot arrows on the chart plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) // Entry and exit logic if long_condition and not short_position strategy.entry("Long", strategy.long) long_position := true short_position := false if short_condition and not long_position strategy.entry("Short", strategy.short) short_position := true long_position := false // Exit conditions (you can customize these) long_exit_condition = ta.crossunder(close, basis) short_exit_condition = ta.crossover(close, basis) if long_exit_condition strategy.close("Long") long_position := false if short_exit_condition strategy.close("Short") short_position := false