
Strategi ini adalah sistem perdagangan kuantitatif berdasarkan prinsip Bollinger Bands dan pengembalian min harga. Dengan memantau sisihan antara harga dan purata bergerak, digabungkan dengan isyarat penembusan landasan atas dan bawah Bollinger Bands, perdagangan dijalankan apabila harga dijangka kembali kepada min selepas pasaran terlebih beli atau terlebih jual. Strategi ini menggunakan ambang peratusan untuk mengukur tahap sisihan harga dan menapis isyarat palsu dengan menetapkan syarat pencetus yang munasabah untuk meningkatkan ketepatan transaksi.
Logik teras strategi adalah berdasarkan elemen utama berikut:
Strategi ini menangkap peluang terlebih beli dan terlebih jual pasaran melalui Bollinger Bands dan prinsip pengembalian min, dan mengawal risiko dagangan dengan berkesan dengan menggabungkan ambang sisihan munasabah dan mekanisme penjejakan status. Rangka kerja strategi mempunyai kebolehskalaan yang baik dan boleh menyesuaikan diri dengan persekitaran pasaran yang berbeza melalui pengoptimuman parameter dan peningkatan fungsi. Adalah disyorkan untuk memberi perhatian kepada kawalan risiko dalam aplikasi masa nyata dan melaraskan parameter mengikut ciri-ciri 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)