
Cette stratégie est un système de trading quantitatif basé sur les principes des bandes de Bollinger et du retour à la moyenne des prix. En surveillant l’écart entre le prix et la moyenne mobile, combiné aux signaux de rupture des pistes supérieures et inférieures des bandes de Bollinger, le trading est effectué lorsque le prix devrait revenir à la moyenne après que le marché ait été suracheté ou survendu. La stratégie utilise un seuil de pourcentage pour mesurer le degré d’écart de prix et filtre les faux signaux en définissant des conditions de déclenchement raisonnables pour améliorer la précision des transactions.
La logique fondamentale de la stratégie repose sur les éléments clés suivants :
Cette stratégie capture les opportunités de surachat et de survente du marché grâce aux bandes de Bollinger et aux principes de retour à la moyenne, et contrôle efficacement les risques de trading en combinant des seuils d’écart raisonnables et des mécanismes de suivi du statut. Le cadre stratégique présente une bonne évolutivité et peut s’adapter à différents environnements de marché grâce à l’optimisation des paramètres et à l’amélioration des fonctions. Il est recommandé de prêter attention au contrôle des risques dans les applications en temps réel et d’ajuster les paramètres en fonction des caractéristiques de produits spécifiques.
/*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)