
Strategi ini adalah strategi perdagangan berdasarkan Brin Belt dan oscillator rawak. Ia menggunakan Brin untuk menentukan ruang turun naik pasaran dan menggunakan oscillator rawak untuk menilai keadaan pasaran yang terlalu banyak dan terlalu banyak.
Strategi ini berpusat pada dua indikator teknikal, Brin Belt dan Random Oscillator. Brin Belt terdiri daripada tiga garis: rel tengah, rel atas, dan rel bawah. Rel tengah adalah purata bergerak sederhana harga, dengan rel atas dan rel bawah masing-masing adalah beberapa kali ganda perbezaan piawaian harga rel tengah ditambah dan dikurangkan. Apabila harga menembusi rel, ia menunjukkan bahawa pasaran mungkin berada dalam keadaan overbought; apabila harga turun, ia menunjukkan bahawa pasaran mungkin berada dalam keadaan oversold.
Oscillator rawak terdiri daripada dua garis: garis% K dan garis% D. Garis% K mengukur kedudukan harga penutupan antara harga tertinggi dan terendah dalam tempoh masa yang terkini, dan garis% D adalah purata bergerak garis% K. Apabila melalui garis% D di atas garis% K, ia menunjukkan bahawa pasaran mungkin berada dalam keadaan overbought; apabila melalui garis% D di bawah garis% K, ia menunjukkan bahawa pasaran mungkin berada dalam keadaan oversold.
Strategi ini menggabungkan kedua-dua indikator ini, strategi dilakukan apabila harga menembusi jalur Burin dan melintasi jalur%D dengan pengosong%K secara rawak; strategi dilakukan apabila harga jatuh di bawah jalur Burin dan melintasi jalur%D dengan pengosong%K secara rawak. Kombinasi ini dapat menangkap trend pasaran dengan berkesan, dan juga dapat mengelakkan perdagangan yang kerap dalam pasaran yang bergolak.
Strategi ini adalah strategi perdagangan yang mudah dan berkesan, dengan menggabungkan kedua-dua petunjuk teknikal klasik, Brin Belt dan Random Oscillator, yang dapat memperoleh keuntungan yang stabil dalam kedua-dua keadaan pasaran yang sedang berkembang dan bergolak. Walaupun strategi ini juga mempunyai beberapa risiko dan batasan, dengan pengoptimuman dan penambahbaikan yang sesuai, prestasi dan kebolehpasaran strategi dapat ditingkatkan lagi, menjadi strategi perdagangan yang bernilai rujukan dan pembelajaran.
/*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")