Strategi ini adalah sistem perdagangan adaptif berdasarkan Bollinger Bands, mengelola posisi dengan secara dinamis memantau hubungan antara harga dan band.
Strategi ini menerapkan prinsip statistik Bollinger Bands, mengendalikan fluktuasi harga dalam rentang distribusi normal. 1. Menggunakan 20-hari Simple Moving Average (SMA) untuk membangun band tengah 2. Menentukan band atas dan bawah menggunakan 2 standar deviasi untuk membentuk rentang fluktuasi harga 3. Membeli posisi 50% ketika harga melanggar band atas sebesar 5% atau tetap di atasnya selama 1 jam 4. Mengurangi posisi sebesar 10% pada pengembalian pertama ke band tengah, 50% ketika harga turun di bawah band bawah sebesar 5% 5. Mengontrol risiko dan mengoptimalkan pengembalian melalui pembentukan posisi bertahap dan pengurangan
Strategi ini menetapkan sistem perdagangan yang lengkap melalui Bollinger Bands dan analisis periode waktu, mencapai keseimbangan antara mengikuti tren dan pengendalian risiko. Meskipun ada ruang untuk optimasi, filosofi desain keseluruhan selaras dengan prinsip perdagangan kuantitatif inti dan memiliki nilai aplikasi praktis.
/*backtest start: 2024-11-11 00:00:00 end: 2024-12-10 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Strategy", overlay=true) // 設定布林通道 length = 20 source = close mult = 2.0 basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upper = basis + dev lower = basis - dev // 畫出布林通道 plot(upper, color=color.red, linewidth=1) plot(basis, color=color.blue, linewidth=1) plot(lower, color=color.green, linewidth=1) // 設定買入條件:突破布林通道高點5%或持續1小時在高點上方 breakout_level = upper * 1.01 hour_breakout = ta.change(time("60")) == 1 and close > upper buy_condition = (close > breakout_level or hour_breakout) if (buy_condition) strategy.entry("Buy", strategy.long, qty=0.5) // 設定賣出條件:第一次回測中線、跌破低點5%或回升中線 sell_10_condition = ta.crossover(close, basis) and strategy.opentrades > 0 sell_50_condition = close < lower * 0.95 // 賣出10%現貨 if (sell_10_condition) strategy.close("Buy", qty=0.1) // 賣出50%現貨 if (sell_50_condition) strategy.close("Buy", qty=0.5) // 監控買入與賣出信號 plotshape(series=buy_condition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal") plotshape(series=sell_10_condition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell 10% Signal") plotshape(series=sell_50_condition, location=location.abovebar, color=color.blue, style=shape.labeldown, title="Sell 50% Signal")