
Chiến lược này được thiết kế dựa trên chỉ số RSI, một hệ thống giao dịch theo xu hướng đơn giản, có thể sử dụng chỉ số RSI để đánh giá xu hướng thị trường trong một khoảng thời gian nhất định.
Chiến lược này sử dụng chỉ số RSI để xác định xu hướng thị trường, và các kênh Bollinger Bands để xác định các khu vực quá mua quá bán.
Đầu tiên, tính RSI, sau đó tính trung bình di chuyển và chênh lệch tiêu chuẩn của RSI để đưa Brin lên và xuống đường. Chỉ số RSI dao động trong khoảng 0-1, và Brin xác định phạm vi bán tháo qua chênh lệch tiêu chuẩn, RSI cao hơn đường ray là vùng mua quá mức và thấp hơn đường ray là vùng bán quá mức.
Khi RSI tạo ra một tín hiệu mua khi nó phá vỡ đường ray dưới và một tín hiệu bán khi nó phá vỡ đường ray trên và một tín hiệu bán khi nó phá vỡ đường ray dưới, thực hiện theo xu hướng.
Chiến lược này đơn giản và hiệu quả sử dụng chỉ số RSI để xác định hướng xu hướng, hỗ trợ xác định thời gian giao dịch cụ thể bằng Brin. Bằng cách giới hạn phạm vi ngày giao dịch, bạn có thể tránh rủi ro không cần thiết.
Định hướng tối ưu hóa:
Chiến lược này nói chung là một chiến lược theo xu hướng rất đơn giản và trực tiếp. Sử dụng xu hướng phán đoán RSI, Brin có tín hiệu lọc, giới hạn phạm vi ngày giao dịch, có thể theo dõi xu hướng hiệu quả và kiểm soát rủi ro. Tuy nhiên, chiến lược có thể được tối ưu hóa hơn nữa, trên cơ sở duy trì hiệu quả đơn giản, cải tiến thêm bằng cách dừng lỗ, tối ưu hóa tham số, lọc tín hiệu và các phương pháp khác, làm cho chiến lược phù hợp hơn với giao dịch thực.
/*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()