
Chiến lược này là một hệ thống giao dịch định lượng dựa trên nguyên tắc của Dải Bollinger và sự đảo ngược giá trung bình. Bằng cách theo dõi độ lệch giữa giá và đường trung bình động, kết hợp với các tín hiệu đột phá của đường trên và đường dưới của Dải Bollinger, giao dịch được thực hiện khi giá dự kiến sẽ trở lại mức trung bình sau khi thị trường bị mua quá mức hoặc bán quá mức. Chiến lược này sử dụng ngưỡng phần trăm để đo mức độ lệch giá và lọc ra các tín hiệu sai bằng cách đặt các điều kiện kích hoạt hợp lý để cải thiện độ chính xác của giao dịch.
Logic cốt lõi của chiến lược này dựa trên các yếu tố chính sau:
Chiến lược này nắm bắt các cơ hội mua quá mức và bán quá mức của thị trường thông qua các nguyên tắc Bollinger Bands và hồi quy trung bình, đồng thời kiểm soát hiệu quả rủi ro giao dịch bằng cách kết hợp ngưỡng độ lệch hợp lý và cơ chế theo dõi trạng thái. Khung chiến lược có khả năng mở rộng tốt và có thể thích ứng với các môi trường thị trường khác nhau thông qua tối ưu hóa tham số và cải thiện chức năng. Nên chú ý kiểm soát rủi ro trong các ứng dụng thời gian thực và điều chỉnh các thông số theo đặc điểm của từng sản phẩm cụ thể.
/*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)