Strategi ini menggabungkan Bollinger Bands dan indikator retracement Fibonacci untuk pendekatan pelbagai penunjuk. Ia tergolong dalam jenis strategi indikator gabungan biasa. Bollinger Bands menentukan arah trend dan tahap Fibonacci mengenal pasti zon sokongan dan rintangan utama untuk menjana isyarat perdagangan.
Strategi ini berdasarkan dua penunjuk utama:
Bollinger Bands
Mengira band atas, tengah dan bawah. harga pecah di atas band bawah adalah isyarat panjang, dan pecah di bawah band atas adalah isyarat pendek.
Pengulangan Fibonacci
Mengira tahap retracement 0% dan 100% berdasarkan paras tertinggi dan terendah dalam sejarah.
Logik perdagangan khusus adalah:
Isyarat panjang: Harga pecah di atas jalur atas, dan di atas sokongan Fibonacci 0%.
Isyarat pendek: Harga pecah di bawah jalur bawah, dan di bawah 100% rintangan Fibonacci.
Keluar berada di sekitar jalur tengah untuk mengambil keuntungan atau hentikan kerugian.
Risiko boleh dikurangkan dengan:
Strategi ini boleh ditingkatkan dengan:
Mengoptimumkan parameter Bollinger Bands
Mencari nisbah optimum untuk jalur atas/bawah
Mengoptimumkan tempoh retracement Fibonacci
Ujian tempoh belakang yang berbeza untuk retracements
Syarat kemasukan yang meringankan
Memerhatikan corak candlestick pada rehat band
Meningkatkan pintu keluar
Mempertimbangkan mekanisme hentian
Ujian parameter khusus produk
Parameter perlu disesuaikan untuk produk yang berbeza
Strategi ini menggabungkan kekuatan Bollinger Bands dan Fibonacci Retracements untuk isyarat berkualiti tinggi. Tetapi cabaran seperti pengoptimuman parameter yang sukar wujud. Penambahbaikan boleh dibuat melalui penyesuaian parameter, mengurangkan kriteria kemasukan, meningkatkan keluar dan lain-lain untuk memperbaiki strategi sambil mengekalkan keunggulan. Penyesuaian berterusan 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