
Chiến lược này kết hợp với việc sử dụng ba chỉ số Brin Band, chỉ số tương đối mạnh (RSI) và chỉ số đường hàng hóa (CCI) để tìm kiếm tín hiệu giao thoa, phát ra tín hiệu mua và bán. Chiến lược này nhằm phát hiện hiện tượng mua quá mức và bán quá mức của thị trường, tham gia vào điểm đảo ngược để có được lợi nhuận đầu tư tốt hơn.
Các vùng Brin bao gồm đường trung, đường trên và đường dưới. Đường trung thường sử dụng đường trung bình di chuyển 20 ngày. Đường trên và đường dưới là hai điểm chênh lệch tiêu chuẩn trên và dưới đường trung.
Chỉ số RSI phản ánh sự thay đổi tốc độ tăng và giảm của giá đóng cửa trong một khoảng thời gian, được sử dụng để đo tỷ lệ sức mạnh của giá mua và giá bán. Các giá trị RSI ở 0 đến 30 là vùng bán tháo, ở 70 đến 100 là vùng mua tháo. Khi RSI giảm từ vùng mua tháo, nó có thể được sử dụng như một tín hiệu bán, khi RSI tăng từ vùng mua tháo, nó có thể được sử dụng như một tín hiệu mua.
Chỉ số CCI được sử dụng để đo mức độ giá cổ phiếu lệch khỏi giá trung bình của nó. Trong đó, + 100 đại diện cho giá cao hơn rất nhiều so với giá trung bình, là mua quá mức; -100 đại diện cho giá thấp hơn rất nhiều so với giá trung bình, là bán quá mức.
Phương pháp này sử dụng Brin để đánh giá giá cả có quá mua hay bán trong thời gian ngắn, sử dụng chỉ số RSI để đánh giá cân bằng sức mạnh mua bán, sử dụng chỉ số CCI để đánh giá mức độ lệch giá. Brin, RSI và chỉ số CCI đồng thời đưa ra tín hiệu mua / bán, phát hành lệnh giao dịch.
Chiến lược này tổng hợp xem xét tình hình thị trường ngắn hạn, trung hạn và dài hạn, thông qua tín hiệu chéo của ba chỉ số Brin, RSI và CCI, để đánh giá thời gian thị trường đảo ngược, thuộc chiến lược theo dõi đảo ngược mạnh mẽ hơn. Có thể được tối ưu hóa hơn nữa bằng cách điều chỉnh tham số, phương thức dừng, v.v.
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(shorttitle="BBRSIstr", title="Bollinger Bands", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
ma(source, length, _type) =>
switch _type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//RSI
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
showDivergence = input.bool(false, title="Show Divergence", group="RSI Settings")
up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"
rsiPlot = plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.yellow)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
//cci
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
plot(cci, "CCI", color=#2962FF)
band1 = hline(100, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(0, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(-100, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color=color.rgb(33, 150, 243, 90), title="Background")
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")
smoothingLine = ma(cci, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, display=display.none)
longCBB= close < lower
shortCBB = close>upper
longBRSI = rsi < 33
shortBRSI = rsi > 70
longcci = cci < -215
shortcci = cci > 250
strategy.entry("LONG", strategy.long, when = longCBB and longBRSI and longcci)
strategy.exit("Exit ", profit = 600)
strategy.entry("SHORT", strategy.short, when = shortCBB and shortBRSI and shortcci)
strategy.exit("Exit ", profit = 600)