Chiến lược giao dịch định lượng RSI và Bollinger Bands


Ngày tạo: 2024-01-08 10:16:22 sửa đổi lần cuối: 2024-01-08 10:16:22
sao chép: 0 Số nhấp chuột: 704
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng RSI và Bollinger Bands

Tổng quan

Chiến lược này được sử dụng để xác định cơ hội giao dịch bằng cách kết hợp các chỉ số tương đối mạnh (RSI) và kênh Blink và thuộc về chiến lược trả lại giá trị trung bình trong giao dịch định lượng. Mua khi RSI thấp hơn mức giảm giá được thiết lập, không có cơ hội tháo lỗ khi giá vượt qua kênh Blink.

Nguyên tắc chiến lược

  1. Sử dụng chỉ số RSI để xác định thị trường có đang bán tháo hay không. RSI dưới 30 được coi là tín hiệu bán tháo.

  2. Sử dụng kênh đường Brinh để xác định giá bắt đầu đảo ngược lên. Khi giá từ đường Brinh xuống đường Brinh và đi qua đường Brinh, kết thúc đa hướng.

  3. Kết hợp với tín hiệu bán tháo RSI và tín hiệu vòng tròn của Bolling, bạn có thể đặt điểm mua. Mua khi cả hai tín hiệu được kích hoạt cùng một lúc, chờ đợi giá vượt qua đường tròn của Bolling để giảm bớt.

Phân tích lợi thế

  1. Chiến lược này kết hợp với chỉ số trung bình RSI và đường Brink của chỉ số kênh để xác định chính xác hơn thời gian mua.

  2. Chỉ số RSI có thể lọc ra nhiều trường hợp phá vỡ giả mạo, giảm các giao dịch không cần thiết.

  3. Brin Line Channel là một chỉ số dừng lỗ, có thể kiểm soát rủi ro của một giao dịch đơn lẻ.

Phân tích rủi ro

  1. Chỉ số RSI có thể phát ra tín hiệu sai, dẫn đến việc bỏ lỡ cơ hội mua.

  2. Cài đặt tham số đường dẫn Brinh không đúng có thể dẫn đến lỗ dừng quá nhẹ hoặc quá nghiêm ngặt.

  3. Lựa chọn loại giao dịch không phù hợp, rủi ro thanh khoản lớn hơn khi giao dịch cổ phiếu có giá trị thị trường nhỏ.

Hướng tối ưu hóa

  1. Có thể thử nghiệm các kết hợp các tham số khác nhau, chẳng hạn như chu kỳ RSI, chu kỳ đường dây Brinh và số nhân, để tìm các tham số tối ưu.

  2. Có thể kết hợp với các chỉ số khác như KD, MACD, v.v., để đặt các điều kiện mua nghiêm ngặt hơn để lọc tín hiệu.

  3. Có thể thiết lập mức dừng lỗ cho các loại giao dịch khác nhau, chẳng hạn như thiết lập mức dừng lỗ biến động.

Tóm tắt

Chiến lược này sử dụng đầu tiên mua ở mức thấp RSI, sau đó sử dụng đường buoyning đường dừng lỗ cao, thuộc chiến lược giao dịch trả về giá trị trung bình. So với chỉ số sử dụng RSI hoặc đường buoyning đơn lẻ, chiến lược này có thể xác định chính xác hơn mua và bán điểm, để có được hiệu quả chiến lược tốt hơn. Bước tiếp theo có thể được cải thiện hơn nữa bằng cách tối ưu hóa tham số tín hiệu, lọc, chiến lược dừng lỗ.

Mã nguồn chiến lược
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's BB + RSI Strategy v1.0", shorttitle = "BB+RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
rsiuse = input(true, defval = true, title = "Use RSI")
bbuse = input(true, defval = true, title = "Use BB")
showbb = input(true, defval = true, title = "Show BB Overlay")
bbperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "BB period")
bbsource = input(ohlc4, title = "BB source")
bbmult = input(2, defval = 2, minval = 1, maxval = 100, title = "BB Mult")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 1000, title = "RSI period")
rsisource = input(close, title = "RSI source")
rsilimit = input(30, defval = 30, minval = 1, maxval = 49, title = "RSI Limit")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")

//RSI
rsi = rsi(rsisource, rsiperiod)

//BB
basis = sma(bbsource, bbperiod)
dev = bbmult * stdev(bbsource, bbperiod)
upper = basis + dev
lower = basis - dev

//Overlay
col = showbb ? blue : na
plot(upper, color = col)
plot(basis, color = col)
plot(lower, color = col)

//Signals
up = (rsi < rsilimit or rsiuse == false) and (low < lower or bbuse == false)
cl = close > open

//Trading
lot = 0.0 
lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, lot)
if cl
    strategy.entry("Close", strategy.short, 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()