Strategi ini adalah strategi dagangan berdasarkan Bollinger Bands dan Stochastic Oscillator. Ia menggunakan Bollinger Bands untuk menentukan julat turun naik pasaran dan menggunakan Stochastic Oscillator untuk menilai keadaan overbought dan oversold di pasaran. Apabila harga memecahkan di atas Bollinger Band atas, strategi itu pergi panjang; apabila harga jatuh di bawah Bollinger Band bawah, strategi itu pergi pendek. Pada masa yang sama, strategi ini juga menggunakan Stochastic Oscillator untuk menapis isyarat dagangan untuk meningkatkan ketepatan dan kebolehpercayaan strategi.
Inti strategi ini adalah dua penunjuk teknikal: Bollinger Bands dan Stochastic Oscillator. Bollinger Bands terdiri daripada tiga garis: band tengah, band atas, dan band bawah. Band tengah adalah purata bergerak harga yang mudah, sementara band atas dan bawah adalah band tengah ditambah dan tolak kelipatan standard deviasi harga. Apabila harga memecahkan di atas band atas, ia menunjukkan bahawa pasaran mungkin terlalu banyak dibeli; apabila harga jatuh di bawah band bawah, ia menunjukkan bahawa pasaran mungkin terlalu banyak dijual.
Osilator Stochastic terdiri daripada dua garis: garis %K dan garis %D. Garis %K mengukur kedudukan harga penutupan dalam harga tertinggi dan terendah dalam tempoh baru-baru ini, dan garis %D adalah purata bergerak garis %K. Apabila garis %K melintasi di atas garis %D, ia menunjukkan bahawa pasaran mungkin terlalu banyak dibeli; apabila garis %K melintasi di bawah garis %D, ia menunjukkan bahawa pasaran mungkin terlalu banyak dijual.
Strategi ini menggabungkan kedua-dua penunjuk ini. Apabila harga memecahkan di atas Bollinger Band atas dan garis Stochastic Oscillator %K melintasi di atas garis %D, strategi akan panjang; apabila harga jatuh di bawah Bollinger Band bawah dan garis Stochastic Oscillator %K melintasi di bawah garis %D, strategi akan pendek. Gabungan ini dapat menangkap trend pasaran dengan berkesan sambil mengelakkan perdagangan yang kerap di pasaran yang tidak menentu.
Strategi ini adalah strategi perdagangan yang mudah namun berkesan yang menggabungkan dua penunjuk teknikal klasik, Bollinger Bands dan Stochastic Oscillator, untuk mencapai pulangan yang stabil dalam kedua-dua keadaan pasaran yang sedang trend dan berayun.
/*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")