
Strategi ini adalah sistem perdagangan kuantitatif berdasarkan prinsip Bollinger Bands dan pembalikan harga rata-rata. Dengan memantau deviasi antara harga dan pergerakan rata-rata, dikombinasikan dengan sinyal terobosan dari jalur atas dan bawah Bollinger Bands, perdagangan dilakukan ketika harga diperkirakan akan kembali ke rata-rata setelah pasar kelebihan beli atau kelebihan jual. Strategi ini menggunakan ambang batas persentase untuk mengukur tingkat penyimpangan harga dan menyaring sinyal palsu dengan menetapkan kondisi pemicu yang wajar untuk meningkatkan akurasi transaksi.
Logika inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:
Strategi ini menangkap peluang pasar yang kelebihan beli dan kelebihan jual melalui Bollinger Bands dan prinsip mean reversion, dan secara efektif mengendalikan risiko perdagangan dengan menggabungkan ambang deviasi yang wajar dan mekanisme pelacakan status. Kerangka strategi memiliki skalabilitas yang baik dan dapat beradaptasi dengan berbagai lingkungan pasar melalui optimalisasi parameter dan peningkatan fungsi. Disarankan untuk memperhatikan pengendalian risiko dalam aplikasi waktu nyata dan menyesuaikan parameter sesuai dengan karakteristik produk tertentu.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Estratégia com Bandas de Bollinger e Sinal de Retorno", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// Configurações das Bandas de Bollinger
length = input.int(20, title="Período da média")
mult = input.float(2.0, title="Desvio padrão")
bbBasis = ta.sma(close, length)
bbUpper = bbBasis + mult * ta.stdev(close, length)
bbLower = bbBasis - mult * ta.stdev(close, length)
// Configuração para a distância da média
percent_threshold = input.float(3.5, title="Distância da média (%)") / 100
dist_from_mean = 0.0
trigger_condition = false
if not na(bbBasis)
dist_from_mean := math.abs(close - bbBasis) / bbBasis
trigger_condition := dist_from_mean >= percent_threshold
// Variáveis para identificar o estado do afastamento
var bool is_outside = false
var color candle_color = color.new(color.white, 0)
if trigger_condition
is_outside := true
if is_outside and close <= bbUpper and close >= bbLower
is_outside := false
candle_color := color.new(color.blue, 0) // Atribui uma cor válida
else
candle_color := color.new(color.white, 0)
// Aplicar cor às velas
barcolor(candle_color)
// Plotar Bandas de Bollinger
plot(bbBasis, color=color.yellow, title="Média")
plot(bbUpper, color=color.red, title="Banda Superior")
plot(bbLower, color=color.green, title="Banda Inferior")
// Lógica de entrada e saída
longCondition = not is_outside and close > bbUpper
if (longCondition)
strategy.entry("Buy", strategy.long)
shortCondition = not is_outside and close < bbLower
if (shortCondition)
strategy.entry("Sell", strategy.short)