この戦略は,ボリンジャーバンドと価格平均逆転原理に基づいた定量的な取引システムである.市場過剰購入/過剰販売状態の後,価格回帰を予想する際に取引するために,ボリンジャーバンドのブレイクアウト信号と組み合わせて移動平均値からの価格偏差を監視する.この戦略は,価格偏差を測定するために百分比の
基本論理は次の主要な要素に基づいています
この戦略は,ボリンジャー帯と平均逆転原理を通じて市場過剰購入/過剰売却の機会を把握し,合理的な偏差しきい値とステータス追跡メカニズムで取引リスクを効果的に制御する.戦略フレームワークはスケーラビリティが良好で,パラメータ最適化および機能改善を通じて異なる市場環境に適応することができます.ライブ取引におけるリスク管理に焦点を当て,特定のインstrumentの特徴に応じてパラメータを調整することが推奨されます.
/*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)