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 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ể.
Hướng dẫn tối ưu hóa:
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()