Chiến lược đảo ngược dựa trên chỉ báo RSI đa kỳ


Ngày tạo: 2023-09-14 20:42:55 sửa đổi lần cuối: 2023-09-14 20:42:55
sao chép: 1 Số nhấp chuột: 735
1
tập trung vào
1617
Người theo dõi

Bài viết này sẽ giới thiệu chi tiết về một chiến lược giao dịch định lượng sử dụng các chỉ số RSI đa chu kỳ để xác định điểm đảo ngược. Chiến lược này đồng thời phân tích nhiều chỉ số RSI để xác định sự hình thành của các bước ngoặt thị trường.

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

Chiến lược này sử dụng 3 nhóm chỉ số RSI với các tham số khác nhau, theo logic cụ thể như sau:

  1. Tính RSI cho chu kỳ 2, chu kỳ 7 và chu kỳ 14;

  2. Khi RSI-2 nhỏ hơn 10, RSI-7 nhỏ hơn 20 và RSI-14 nhỏ hơn 30, được coi là đáy hình thành;

  3. Khi RSI-2 lớn hơn 90, RSI-7 lớn hơn 80, RSI-14 lớn hơn 70, nó được coi là hình thành đỉnh.

  4. Theo sự thống nhất của chỉ số RSI, tạo ra tín hiệu mua bán.

  5. Các tham số yêu cầu đồng nhất chỉ số có thể được đặt trước để kiểm soát tần số tín hiệu.

Bằng cách này, phân tích tập hợp các chỉ số RSI đa chu kỳ có thể nâng cao độ chính xác của phán đoán về điểm đảo ngược.

2 - Lợi thế chiến lược

Lợi thế lớn nhất của chiến lược này là sử dụng các chỉ số RSI đa chu kỳ để phân tích tập hợp, điều này có thể cải thiện độ chính xác phán đoán về các điểm quan trọng, loại bỏ các tín hiệu sai.

Một lợi thế khác là có thể điều chỉnh các tham số thống nhất, kiểm soát tần số giao dịch, thích ứng với các môi trường thị trường khác nhau.

Cuối cùng, sự kết hợp của các RSI khác nhau trong các giai đoạn cũng cung cấp nhiều tham số để tối ưu hóa.

Ba, rủi ro tiềm ẩn

Tuy nhiên, chiến lược này cũng có những rủi ro:

Đầu tiên, chỉ số RSI có vấn đề về sự chậm trễ trong việc đánh giá sự đảo ngược giá.

Thứ hai, việc phân tích các tín hiệu từ các kết hợp đa chỉ số rất khó khăn và cần thiết phải thiết lập các quy tắc lọc rõ ràng.

Cuối cùng, các giao dịch đảo ngược có một tỷ lệ thất bại, điều này đòi hỏi sự chuẩn bị tâm lý.

Bốn nội dung, tóm tắt

Bài viết này mô tả chi tiết một chiến lược giao dịch định lượng dựa trên các chỉ số RSI đa chu kỳ để xác định các điểm đảo chiều. Nó giúp cải thiện khả năng nhận diện các điểm đảo chiều của thị trường bằng cách đánh giá tính nhất quán của chỉ số RSI.

Mã nguồn chiến lược
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Triple RSI Top/Bottom v1.1", shorttitle = "3RSI Top/Bottom 1.1", 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")
leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
indi = input(3, defval = 3, minval = 1, maxval = 3, title = "Indicators")
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))

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
acc = 10 - accuracy
signalup1 = fastrsi < (5 + acc) ? 1 : 0
signalup2 = middlersi < (10 + acc * 2) ? 1 : 0
signalup3 = slowrsi < (15 + acc * 3) ? 1 : 0

signaldn1 = fastrsi > (95 - acc) ? 1 : 0
signaldn2 = middlersi > (90 - acc * 2) ? 1 : 0
signaldn3 = slowrsi > (85 - acc * 3) ? 1 : 0

up = signalup1 + signalup2 + signalup3 >= indi
dn = signaldn1 + signaldn2 + signaldn3 >= indi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 3

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1]

if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : lot)
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()