Chiến lược này là một chiến lược giao dịch sử dụng chỉ số RSI để xác định tình trạng xung đột và nắm bắt cơ hội đảo ngược xu hướng trong quá trình xung đột. Chiến lược sử dụng chỉ số RSI nhanh để xác định liệu giá có đi vào khu vực xung đột hay không và kết hợp các thực thể K-line và tín hiệu đa không gian của RSI nhanh để đánh giá thời gian vào thị trường.
Chiến lược này hoạt động dựa trên các nguyên tắc sau:
Cụ thể, chiến lược sử dụng RSI hai chu kỳ để xác định liệu giá có lọt vào phạm vi rung động 30-70 không. Đồng thời yêu cầu thực thể K-line phá vỡ đường trung bình 1⁄4 hoặc 1⁄2 để tạo ra tín hiệu giao dịch. Bằng cách đánh giá điều kiện kép, bạn có thể lọc hiệu quả các tín hiệu giả của hành vi rung động và đảm bảo chỉ vào khi có rung động thực sự.
Chiến lược này có những lợi thế đáng kể sau:
Chiến lược này cũng có một số rủi ro cần lưu ý:
Để kiểm soát rủi ro, khuyến nghị điều chỉnh phù hợp các tham số, xác minh thực tế và thiết lập các cơ chế dừng lỗ.
Chiến lược này có thể được tối ưu hóa hơn nữa:
Các phương tiện như tích hợp nhiều chỉ số, điều chỉnh tham số thích ứng và giao dịch thuật toán có thể sẽ nâng cao hơn nữa sự ổn định và lợi nhuận của chiến lược.
Chiến lược giao dịch RSI dao động nhanh, đánh giá thời gian đầu vào thông qua chỉ số RSI nhanh để nắm bắt biến động giá và cơ chế lọc kép, là một chiến lược hiệu quả đáng nghiên cứu và áp dụng. Trong thực tế, cần chú ý đến rủi ro và điều chỉnh tối ưu hóa ở nhiều chiều để nâng cao hiệu quả chiến lược hơn nữa.
/*backtest
start: 2023-01-07 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "Noro's FRSI Strategy v1.22", shorttitle = "FRSI str 1.22", overlay = true )
//Settings
uprsiperiod = input(2, defval = 2, minval = 2, maxval = 50, title = "RSI UP Period")
dnrsiperiod = input(9, defval = 9, minval = 2, maxval = 50, title = "RSI DN Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
sps = 0
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2018, defval = 2018, 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")
//Fast RSI
fastup = rma(max(change(rsisrc), 0), uprsiperiod)
fastdown = rma(-min(change(rsisrc), 0), dnrsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit
//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0
//Body
body = abs(close - open)
emabody = ema(body, 30)
//Signals
up = bar == -1 and sps == 0 and dnrsi and body > emabody / 4
dn = bar == 1 and sps == 0 and uprsi and body > emabody / 4
exit = bar == 1 and fastrsi > dnlimit and body > emabody / 2
//Trading
if up
strategy.entry("Long", strategy.long)
sps := 1
if exit
strategy.close_all()
sps := 0