
Die Strategie ist eine verbesserte Version der Trend-Tracking-Strategie, die auf den Brin-Band-Indikatoren basiert. Sie bestätigt die Zuverlässigkeit des Trends, indem sie die Preise mit drei aufeinanderfolgenden Berührungen der Brin-Band überwacht, wodurch sie unter höheren Gewinnraten handeln. Die Strategie verwendet einen 20-Zyklus-Moving Average als Mittelstraße und berechnet die Auf- und Abweichung mit einer Doppel-Standard-Differenz als Basis.
Die zentrale Logik der Strategie besteht darin, dass die Preise durch die Zählmechanismen die fortlaufende Berührung der Bollinger-Band-Grenze erkennen. Wenn die Preise drei Mal in Folge unter die Bahn gehen, gibt das System mehrere Signale aus; wenn die Preise drei Mal in Folge auf die Bahn gehen, gibt es ein Leersignal.
Die Strategie realisiert eine Trend-Tracking-Strategie mit hoher Zuverlässigkeit durch die Verbesserung des herkömmlichen Brin-Band-Trading-Systems. Die einzigartige Triple-Touch-Bestätigungsmechanik erhöht die Erfolgsrate der Trades wirksam, während die Plateau-Mechanik auf Basis von Moving Averages eine angemessene Gewinnlösung bietet. Obwohl die Strategie noch einige inhärente Risiken birgt, kann die Stabilität und Profitabilität der Strategie durch die Bereitstellung von Optimierungsrichtungen weiter verbessert werden.
/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Bollinger Bands Strategy - 3 Crossings", overlay=true)
// Input Parameters
length = input.int(20, title="Bollinger Bands Length", minval=1)
src = input(close, title="Source")
mult = input.float(2.0, title="Multiplier", step=0.1)
// Calculate Bollinger Bands
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
// Plot Bollinger Bands
plotBasis = plot(basis, color=color.blue, title="Basis")
plotUpper = plot(upper, color=color.red, title="Upper Band")
plotLower = plot(lower, color=color.green, title="Lower Band")
fill(plot1=plotUpper, plot2=plotLower, color=color.new(color.blue, 90), title="Band Fill")
// Counter Variables
var int longCrossCount = 0
var int shortCrossCount = 0
// Detect Crossings
longCondition = close < lower // Price closes below the lower band
shortCondition = close > upper // Price closes above the upper band
if longCondition
longCrossCount += 1 // Increment the counter for long
shortCrossCount := 0 // Reset the short counter
if shortCondition
shortCrossCount += 1 // Increment the counter for short
longCrossCount := 0 // Reset the long counter
if not longCondition and not shortCondition
longCrossCount := 0 // Reset if no crossing
shortCrossCount := 0
// Entry and Exit Rules
if longCrossCount >= 3 and strategy.position_size <= 0
strategy.entry("Long", strategy.long)
longCrossCount := 0 // Reset the counter after entering
if shortCrossCount >= 3 and strategy.position_size >= 0
strategy.entry("Short", strategy.short)
shortCrossCount := 0 // Reset the counter after entering
// Exit Condition (When Price Returns to the Middle Band)
exitCondition = ta.crossover(src, basis) or ta.crossunder(src, basis)
if exitCondition and strategy.position_size > 0
strategy.close("Long")
if exitCondition and strategy.position_size < 0
strategy.close("Short")