
Strategi ini adalah strategi perdagangan yang didasarkan pada pita Brin dan osilator acak. Strategi ini menggunakan pita Brin untuk menentukan kisaran fluktuasi pasar dan menggunakan osilator acak untuk menilai keadaan overbought dan oversold pasar.
Inti dari strategi ini adalah dua indikator teknis Brin Belt dan Random Oscillator. Brin Belt terdiri dari tiga garis: rel tengah, rel atas, dan rel bawah. Rel tengah adalah rata-rata bergerak sederhana dari harga, dengan rel atas dan rel bawah masing-masing adalah beberapa kali lipat dari selisih standar harga rel tengah ditambah dan dikurangi.
Oscillator acak terdiri dari dua garis: garis%K dan garis%D. Garis%K mengukur posisi harga penutupan antara harga tertinggi dan terendah dalam periode waktu terakhir, dan garis%D adalah rata-rata bergerak dari garis%K. Ketika melewati garis%D di atas garis%K, pasar mungkin berada dalam keadaan overbought; Ketika melewati garis%D di bawah garis%K, pasar mungkin berada di keadaan oversold.
Strategi ini menggabungkan kedua indikator ini, dengan melakukan overtrading ketika harga menembus Bollinger Bands dan melintasi% D dengan osilator% K secara acak; dan melakukan undertrading ketika harga melintasi Bollinger Bands dan melintasi% D dengan osilator% K secara acak. Kombinasi ini dapat secara efektif menangkap tren pasar, dan juga dapat menghindari perdagangan yang sering terjadi di pasar yang bergejolak.
Strategi ini adalah strategi perdagangan yang sederhana dan efektif, dengan menggabungkan dua indikator teknis klasik, pita Brin dan osilator acak, yang mampu menghasilkan keuntungan yang stabil di kedua kondisi pasar yang sedang tren dan bergolak. Meskipun strategi ini juga memiliki beberapa risiko dan keterbatasan, dengan pengoptimalan dan perbaikan yang tepat, kinerja dan kemampuan adaptasi strategi dapat ditingkatkan lebih lanjut, menjadi strategi perdagangan yang layak untuk dirujuk dan dipelajari.
/*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")