
Chiến lược này là một chiến lược giao dịch dựa trên băng tần Brin và dao động ngẫu nhiên. Nó sử dụng băng tần Brin để xác định phạm vi biến động của thị trường và sử dụng dao động ngẫu nhiên để đánh giá tình trạng quá mua và quá bán của thị trường.
Trung tâm của chiến lược này là hai chỉ số kỹ thuật Brin Belt và Random Oscillator. Brin Belt bao gồm ba đường: đường trung, đường trên và đường dưới.
Ống dao động ngẫu nhiên bao gồm hai đường: đường% K và đường% D. Đường% K đo vị trí của giá đóng cửa giữa giá cao nhất và giá thấp nhất trong khoảng thời gian gần đây, đường% D là đường trung bình di chuyển của đường% K. Khi đi qua đường% D trên đường% K, nó cho thấy thị trường có thể đang quá mua; khi đi qua đường% D dưới đường% K, nó cho thấy thị trường có thể đang quá bán.
Chiến lược này kết hợp cả hai chỉ số này, khi giá phá vỡ đường dây Brin lên đường và dao động ngẫu nhiên% K trên đường đi% D, chiến lược được thực hiện; khi giá phá vỡ đường dây Brin xuống đường và dao động ngẫu nhiên% K dưới đường đi% D, chiến lược được thực hiện. Sự kết hợp này có thể nắm bắt hiệu quả xu hướng của thị trường, đồng thời cũng có thể tránh giao dịch thường xuyên trong thị trường biến động.
Chiến lược này là một chiến lược giao dịch đơn giản và hiệu quả, có thể tạo ra lợi nhuận ổn định trong cả hai tình trạng thị trường xu hướng và biến động bằng cách kết hợp hai chỉ số kỹ thuật cổ điển của băng Brin và dao động ngẫu nhiên. Mặc dù chiến lược này cũng có một số rủi ro và hạn chế, nhưng với sự tối ưu hóa và cải tiến thích hợp, có thể nâng cao hơn nữa hiệu suất và khả năng thích ứng của chiến lược, trở thành một chiến lược giao dịch đáng xem và học hỏi.
/*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")