
Bei dieser Strategie handelt es sich um ein quantitatives Handelssystem, das auf den Prinzipien der Bollinger-Bänder und der Rückkehr zum Preismittelwert basiert. Durch die Überwachung der Abweichung zwischen dem Preis und dem gleitenden Durchschnitt, kombiniert mit den Durchbruchssignalen der oberen und unteren Spuren der Bollinger-Bänder, wird der Handel durchgeführt, wenn der Preis voraussichtlich zum Mittelwert zurückkehrt, nachdem der Markt überkauft oder überverkauft ist. Die Strategie verwendet einen prozentualen Schwellenwert, um den Grad der Preisabweichung zu messen, und filtert falsche Signale heraus, indem sie angemessene Auslösebedingungen festlegt, um die Transaktionsgenauigkeit zu verbessern.
Die Kernlogik der Strategie basiert auf den folgenden Schlüsselelementen:
Diese Strategie nutzt überkaufte und überverkaufte Marktgelegenheiten durch Bollinger-Bänder und das Prinzip der Rückkehr zum Mittelwert und kontrolliert Handelsrisiken effektiv durch die Kombination angemessener Abweichungsschwellenwerte und Statusverfolgungsmechanismen. Der Strategierahmen ist gut skalierbar und kann durch Parameteroptimierung und Funktionsverbesserung an unterschiedliche Marktumgebungen angepasst werden. Es wird empfohlen, bei Echtzeitanwendungen auf die Risikokontrolle zu achten und die Parameter entsprechend den Eigenschaften bestimmter Produkte anzupassen.
/*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)