Chiến lược giao dịch cực kỳ RSI ba lần

Tác giả:ChaoZhang, Ngày: 2023-11-02 14:34:21
Tags:

img

Tổng quan

Chiến lược này sử dụng ba chỉ số RSI với các khoảng thời gian khác nhau để xác định xem thị trường đã đạt đến mức mua quá mức hoặc bán quá mức cực kỳ, và tạo ra tín hiệu mua và bán phù hợp.

Chiến lược logic

Chiến lược này sử dụng các chỉ số RSI 2 giai đoạn, 7 giai đoạn và 14 giai đoạn đồng thời. Khi cả ba chỉ số RSI cho thấy tín hiệu mua quá mức hoặc bán quá mức cùng một lúc, các tín hiệu giao dịch được tạo ra.

Cụ thể, khi chỉ số RSI 2 giai đoạn thấp hơn 10, chỉ số RSI 7 giai đoạn thấp hơn 20 và chỉ số RSI 14 giai đoạn thấp hơn 30, thị trường được coi là quá bán và một tín hiệu mua được tạo ra.

Mã sử dụng một tham số độ chính xác để điều chỉnh các giá trị ngưỡng mua quá mức / bán quá mức của chỉ số RSI. mặc định là 3, và các giá trị thấp hơn có nghĩa là các tiêu chí mua quá mức / bán quá mức nghiêm ngặt hơn.

Khi một tín hiệu mua hoặc bán được tạo ra, nếu giá đảo ngược và phá vỡ giá mở cửa của ngày, vị trí hiện tại sẽ được đóng để thực hiện lợi nhuận hoặc cắt lỗ.

Phân tích lợi thế

  • Sử dụng sự kết hợp của các chỉ số RSI nhiều giai đoạn có thể xác định chính xác hơn các điều kiện mua quá mức / bán quá mức và lọc các tín hiệu sai.

  • Điều chỉnh tinh tế các tiêu chí mua quá mức / bán quá mức với các tham số khác nhau cho phép điều chỉnh độ nhạy của chiến lược dựa trên điều kiện thị trường.

  • Thực hiện các điểm dừng theo dõi giá mở giúp khóa lợi nhuận kịp thời.

Phân tích rủi ro

  • Các chỉ số RSI có xu hướng phân kỳ, không hiệu quả trong việc xác định sự đảo ngược xu hướng.

  • Đối với các giai đoạn biến động cao, các thông số RSI cần phải được điều chỉnh, nếu không nó có thể kích hoạt dừng quá thường xuyên.

  • Các tín hiệu RSI ba lần kích hoạt cùng nhau là hiếm, có thể bỏ lỡ cơ hội giao dịch tốt.

  • Các tham số cho các tiêu chí mua quá mức / bán quá mức nên được điều chỉnh và thử nghiệm trên các thị trường khác nhau.

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

  • Xem xét thêm các chỉ số khác để xác nhận, chẳng hạn như Bollinger Bands, KDJ vv, để tránh sự khác biệt của RSI.

  • Tự động tối ưu hóa các thông số RSI dựa trên các chế độ thị trường khác nhau.

  • Kiểm tra các điều kiện dừng thoát khác, chẳng hạn như dừng ATR.

  • Thêm bộ lọc để tránh giao dịch trong thời gian không phù hợp.

Kết luận

Chiến lược này xác định các khu vực mua quá mức / bán quá mức bằng cách sử dụng sự kết hợp của các chỉ số RSI nhiều giai đoạn và thực hiện các điểm dừng theo dõi xu hướng. Ưu điểm bao gồm cải thiện độ chính xác, ngừng kịp thời; Nhược điểm bao gồm các giao dịch bị thiếu, đánh giá sai RSI. Kiểm tra tối ưu hóa tham số được khuyến cáo, cùng với việc thêm các chỉ số xác nhận, để đạt được hiệu suất tốt hơn.


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

//@version=3
strategy(title = "Noro's Triple RSI Top/Bottom", shorttitle = "3RSI Top/Bottom", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
fromyear = input(1900, defval = 1900, 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")


//RSI-2
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))

//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Signals
acc = 10 - accuracy
up = fastrsi < (5 + acc) and middlersi < (10 + acc * 2) and slowrsi < (15 + acc * 3)
dn = fastrsi > (95 - acc) and middlersi > (90 - acc * 2) and slowrsi > (85 - acc * 3)
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size > 0 and close > open)

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

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : na, 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