
Die Strategie ist eine Handelsstrategie, die auf Bollinger Bands und Zufallsoscillatoren basiert. Sie nutzt Bollinger Bands, um die Bandbreite der Marktfluktuation zu bestimmen, und verwendet Zufallsoscillatoren, um die Überkauf- und Überverkaufssituation des Marktes zu beurteilen. Wenn der Preis die Bollinger Bands überschreitet, wird die Strategie ausgeführt.
Im Mittelpunkt der Strategie stehen die beiden technischen Indikatoren Brin-Band und Random-Oscillator. Der Brin-Band besteht aus drei Linien: Mittlere, obere und untere Bahn. Die mittlere Bahn ist ein einfacher Moving Average der Preise, wobei die oberen und unteren Bahnen jeweils ein gewisses Vielfaches der Preisstandarddifferenz der mittleren Bahn sind.
Der Zufallsoscillator besteht aus zwei Linien: der %K-Linie und der %D-Linie. Die %K-Linie misst die Position des Schlusskurses zwischen dem Höchst- und dem Tiefstpreis in der jüngsten Zeit. Die %D-Linie ist der Moving Average der %K-Linie.
Die Strategie kombiniert diese beiden Indikatoren, indem sie einen Übertritt ausführt, wenn der Preis die Bollinger-Band-Linie überschreitet und die Zufalls-Oscillator-%K die %D-Linie durchbricht. Die Strategie führt einen Ausfall aus, wenn der Preis die Bollinger-Band-Linie überschreitet und die Zufalls-Oscillator-%K die %D-Linie durchbricht. Diese Kombination kann die Markttrends effektiv erfassen und gleichzeitig den häufigen Handel in einem schwankenden Markt vermeiden.
Die Strategie ist eine einfache und effektive Handelsstrategie, die durch die Kombination der beiden klassischen technischen Indikatoren Brin-Band und Zufalls-Oscillator in der Lage ist, stabile Gewinne in Trends und Marktschwankungen zu erzielen. Obwohl die Strategie auch einige Risiken und Grenzen hat, kann die Leistung und Anpassungsfähigkeit der Strategie durch geeignete Optimierung und Verbesserung weiter verbessert werden.
/*backtest
start: 2023-05-03 00:00:00
end: 2024-05-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Unique Bollinger Bands Strategy", overlay=true)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)
basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev
upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2
colorBasis = src >= basis ? color.blue : color.orange
pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))
fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))
// Parameters
bbLength = input.int(34, title="Length", minval=1)
bbMultiplier = input.float(2.0, title="Multiplier", minval=0.001, maxval=50)
// Source
priceData = close // Unique name for price data source
// Bollinger Bands Calculation
bbBasis = ta.sma(priceData, bbLength)
bbDeviation = ta.stdev(priceData, bbLength)
bbDeviationMultiplied = bbMultiplier * bbDeviation
bbUpperBand = bbBasis + bbDeviationMultiplied
bbLowerBand = bbBasis - bbDeviationMultiplied
// Plot Bollinger Bands
plot(bbBasis, color=color.blue, linewidth=2)
plot(bbUpperBand, color=color.blue)
plot(bbLowerBand, color=color.orange)
// Strategy Logic for Entry and Exit
enterLong = ta.crossover(priceData, bbUpperBand)
enterShort = ta.crossunder(priceData, bbLowerBand)
// Enter Long when price crosses over upper band
if (enterLong)
strategy.entry("Long", strategy.long)
// Enter Short when price crosses under lower band
if (enterShort)
strategy.entry("Short", strategy.short)
// Close Long when Short condition is met (i.e., price under lower band)
if (enterShort)
strategy.close("Long")
// Close Short when Long condition is met (i.e., price over upper band)
if (enterLong)
strategy.close("Short")