Xu hướng RSI theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-10-26 15:44:15
Tags:

img

Tổng quan

Chiến lược này thiết kế một hệ thống giao dịch theo xu hướng đơn giản dựa trên chỉ số RSI, có thể xác định hướng xu hướng thị trường thông qua RSI và thực hiện các vị trí dài và ngắn tự động trong phạm vi ngày cụ thể.

Chiến lược logic

Chiến lược sử dụng chỉ số RSI để xác định xu hướng thị trường và Bollinger Bands để xác nhận các khu vực mua quá mức và bán quá mức.

Đầu tiên, giá trị RSI được tính toán. Các dải trên và dưới của Bollinger Bands được tính toán dựa trên trung bình động và độ lệch chuẩn của RSI. RSI dao động giữa 0-1, và Bollinger Bands xác định các khu vực mua quá mức và bán quá mức thông qua độ lệch chuẩn. Khi RSI cao hơn dải trên, nó là khu vực mua quá mức, và khi thấp hơn dải dưới, nó là khu vực bán quá mức.

Khi chỉ số RSI vượt qua từ dải dưới đến dải trên, một tín hiệu mua được tạo ra. Khi chỉ số RSI vượt qua từ dải trên đến dải dưới, một tín hiệu bán được tạo ra, để theo xu hướng. Sau khi vào thị trường, không có dừng lỗ hoặc lấy lợi nhuận được thiết lập cho đến khi các vị trí được đóng vào cuối phạm vi ngày đã chỉ định.

Chiến lược sử dụng chỉ số RSI đơn giản và hiệu quả để xác định hướng xu hướng và Bollinger Bands để xác định các cơ hội giao dịch cụ thể.

Phân tích lợi thế

  • Sử dụng chỉ số RSI để xác định hướng xu hướng là đơn giản và hiệu quả
  • Kết hợp các Bollinger Bands để xác nhận tín hiệu giao dịch tránh sự phá vỡ sai
  • Xác định phạm vi ngày giao dịch giúp tránh rủi ro thị trường
  • Không dừng lỗ hoặc lấy lợi nhuận, tối đa hóa xu hướng sau
  • Điều chỉnh tham số linh hoạt, thích nghi với các môi trường thị trường khác nhau

Rủi ro và tối ưu hóa

  • Thị trường có thể có những biến động dữ dội, dẫn đến tổn thất
  • Không dừng lỗ hoặc lấy lợi nhuận không kiểm soát hiệu quả rủi ro
  • Cài đặt tham số không chính xác có thể gây ra quá mức giao dịch hoặc bỏ lỡ cơ hội

Hướng dẫn tối ưu hóa:

  • Thêm dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro
  • Tối ưu hóa cài đặt tham số để cải thiện tỷ lệ thắng
  • Thêm các chỉ số khác để lọc tín hiệu và tránh đột phá sai
  • Điều chỉnh động kích thước vị trí

Tóm lại

Tóm lại, đây là một chiến lược theo xu hướng rất đơn giản và trực tiếp. Sử dụng RSI để xác định xu hướng, Bollinger Bands để lọc tín hiệu và xác định phạm vi ngày giao dịch, có thể theo dõi hiệu quả xu hướng và kiểm soát rủi ro. Nhưng chiến lược có thể được tối ưu hóa hơn nữa. Trong khi giữ cho nó đơn giản và hiệu quả, các phương pháp như dừng lỗ, tối ưu hóa tham số và lọc tín hiệu có thể được thêm vào để làm cho nó phù hợp hơn cho giao dịch trực tiếp.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Gidra
//2018

//@version=2
strategy(title = "Gidra's RSI or MFI Strategy v0.1", shorttitle = "Gidra's RSI or MFI v0.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 1)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, title="source")
lengthRSI = input(14, title="RSI or MFI length")
// RSI %B
useRSI = input(true, title="use RSI or MFI")
fromyear = input(2018, defval = 2018, 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")

//MFI
upper = sum(volume * (change(src) <= 0 ? 0 : src), lengthRSI)
lower = sum(volume * (change(src) >= 0 ? 0 : src), lengthRSI)
mf = rsi(upper, lower)

//RSI
rsi = useRSI?rsi(src, lengthRSI): mf

// %B
length = input(50, minval=1, title="BB length")
mult = input(1.618, minval=0.001, maxval=50)
basis = sma(rsi, length)
dev = mult * stdev(rsi, length)
upperr = basis + dev
lowerr = basis - dev
bbr = (rsi - lowerr)/(upperr - lowerr)

plot(bbr, color=black, transp=0, linewidth=2)
// band1 = hline(1, color=white, linestyle=dashed)
// band0 = hline(0, color=white, linestyle=dashed)
// fill(band1, band0, color=teal)
hline(0.5, color=white)

//Signals
up = bbr >= 0 and bbr[1] < 0
dn = bbr <= 1 and bbr[1] > 1
//exit = ((bbr[1] < 0.5 and bbr >= 0.5) or (bbr[1] > 0.5 and bbr <= 0.5))

lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)// or exit
    strategy.close_all()

Thêm nữa