Phân tích chiến lược RSI nhanh

Tác giả:ChaoZhang, Ngày: 2023-12-04 14:40:02
Tags:

img

Tên chiến lược

Chiến lược xu hướng RSI hai hướng cực đoan

Tổng quan

Chiến lược này sử dụng chỉ số RSI để xác định xu hướng giá nhanh chóng. Nó có cả khả năng dài và ngắn để nắm bắt mức giá ngắn hạn nhanh hơn.

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

Chiến lược này sử dụng một chỉ số RSI được cải tiến để đánh giá tình trạng mua quá nhiều và bán quá nhiều của giá, kết hợp với lọc thân nến để giảm tiếng ồn. Nó đi dài hoặc ngắn khi RSI nằm trong vùng mua quá nhiều hoặc bán quá nhiều và kích thước thân nến lớn hơn 1/3 kích thước thân trung bình. Nó đóng các vị trí khi nến đảo ngược hướng và RSI kéo trở lại mức an toàn hơn sau khi các tín hiệu giao dịch được kích hoạt.

Phân tích lợi thế

Chiến lược này phản ứng nhanh chóng và có thể nắm bắt các xu hướng ngắn hạn nhanh hơn. Trong khi đó, lọc cơ thể giúp giảm tiếng ồn và tránh bị đánh lừa bởi các đột phá sai. Nó phù hợp với các sản phẩm biến động cao và có thể đạt được lợi nhuận cao hơn.

Phân tích rủi ro

Chiến lược này khá nhạy cảm với sự thay đổi giá cả, dễ bị đánh lạc hướng bởi các tín hiệu sai trên thị trường. Ngoài ra, dừng lỗ có thể được kích hoạt thường xuyên trong thị trường biến động cao. Chúng ta có thể nới lỏng phạm vi dừng lỗ và tối ưu hóa các thông số RSI để giảm xác suất tín hiệu sai.

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

Chúng ta có thể kiểm tra các thông số định kỳ khác nhau của các chỉ số để tối ưu hóa chiến lược và tìm ra sự kết hợp thông số tốt nhất. Ngoài ra, kết hợp các chỉ số khác như các quy tắc giao dịch rùa có thể giúp lọc tín hiệu hơn nữa. Đào tạo ngưỡng RSI tốt hơn thông qua các phương pháp học máy cũng có thể là một nỗ lực đáng giá.

Tóm lại

Nhìn chung, đây là một chiến lược ngắn hạn hiệu quả và đáp ứng. Với một số thông số và tối ưu hóa mô hình, nó có tiềm năng để tăng thêm sự ổn định và lợi nhuận. Nó xứng đáng với nghiên cứu và theo dõi tiếp tục của các nhà giao dịch lượng.


/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Source")
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")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
uplimit = 100 - limit
dnlimit = limit

//Body
body = abs(close - open)
emabody = ema(body, 30) / 3

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = bar == -1 and fastrsi < dnlimit and body > emabody
dn = bar == 1 and fastrsi > uplimit and body > emabody
exit = ((strategy.position_size > 0 and fastrsi > dnlimit) or (strategy.position_size < 0 and fastrsi < uplimit)) and body > emabody

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

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

Thêm nữa