この戦略は、ボリンジャー バンドと価格平均回帰の原理に基づいた定量的な取引システムです。価格と移動平均の偏差を監視し、ボリンジャーバンドの上限と下限のブレイクスルーシグナルと組み合わせて、市場が買われ過ぎまたは売られ過ぎになった後に価格が平均値に戻ると予想されるときに取引が行われます。この戦略では、パーセンテージしきい値を使用して価格偏差の度合いを測定し、適切なトリガー条件を設定して誤ったシグナルを除外し、取引の精度を向上させます。
戦略の中核となるロジックは、次の主要な要素に基づいています。
この戦略は、ボリンジャー バンドと平均回帰原理を通じて市場の買われすぎと売られすぎの機会を捉え、合理的な偏差しきい値とステータス追跡メカニズムを組み合わせることで、取引リスクを効果的に制御します。戦略フレームワークは優れたスケーラビリティを備えており、パラメータの最適化と機能の改善を通じてさまざまな市場環境に適応できます。リアルタイムアプリケーションではリスク管理に注意し、特定の製品の特性に応じてパラメータを調整することをお勧めします。
/*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)