
이 전략은 볼린저 밴드와 가격 평균 회귀의 원칙을 기반으로 한 양적 거래 시스템입니다. 볼린저 밴드의 상단 및 하단 트랙의 돌파 신호와 함께 가격과 이동 평균의 편차를 모니터링하여, 시장이 매수 과다 또는 매도 과다 상태일 때 가격이 평균으로 회귀할 것으로 예상될 때 거래를 수행합니다. 이 전략은 가격 편차의 정도를 측정하기 위해 백분율 임계값을 사용하고, 합리적인 트리거 조건을 설정하여 잘못된 신호를 걸러내어 거래 정확도를 높입니다.
전략의 핵심 논리는 다음과 같은 핵심 요소에 기초합니다.
이 전략은 볼린저 밴드와 평균 회귀 원칙을 통해 시장의 매수 과다 및 매도 과다 기회를 포착하고, 합리적인 편차 임계값과 상태 추적 메커니즘을 결합하여 거래 위험을 효과적으로 제어합니다. 전략 프레임워크는 확장성이 뛰어나며 매개변수 최적화와 기능 개선을 통해 다양한 시장 환경에 적응할 수 있습니다. 실시간 애플리케이션에서는 위험 제어에 주의를 기울이고 특정 제품의 특성에 맞게 매개 변수를 조정하는 것이 좋습니다.
/*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)