이 전략은 볼링거 밴드 (Bollinger Bands) 와 가격 평균 회전 원리에 기반한 양적 거래 시스템이다. 시장의 과잉 구매/ 과잉 판매 조건 이후 가격 회귀를 예상할 때 거래하기 위해 볼링거 밴드 (Bollinger Bands) 브레이크아웃 신호와 결합하여 이동 평균에서 가격 오차를 모니터링합니다. 전략은 가격 오차를 측정하기 위해 비율 임계치를 사용하고 잘못된 신호를 필터하고 거래 정확도를 향상시키기 위해 합리적인 트리거 조건을 설정합니다.
핵심 논리는 다음과 같은 핵심 요소에 기반합니다.
이 전략은 볼링거 밴드 및 평균 회귀 원칙을 통해 시장 과잉 구매 / 과잉 판매 기회를 포착하고 합리적인 오차 문턱 및 상태 추적 메커니즘으로 거래 위험을 효과적으로 제어합니다. 전략 프레임워크는 좋은 확장성을 가지고 있으며 매개 변수 최적화 및 기능 개선을 통해 다른 시장 환경에 적응 할 수 있습니다. 라이브 거래에서 위험 통제에 집중하고 특정 도구 특성에 따라 매개 변수를 조정하는 것이 좋습니다.
/*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)