Chiến lược chỉ số RSI ngẫu nhiên cho giao dịch tiền điện tử

Tác giả:ChaoZhang, Ngày: 2023-12-15 10:08:14
Tags:

img

I. Tổng quan chiến lược

Chiến lược này được đặt tên là Chiến lược RSI Stochastic for Cryptocurrency Trading. Nó kết hợp Chỉ số Sức mạnh Tương đối (RSI) và các chỉ số RSI Stochastic để xác định tín hiệu mua và bán cho tiền điện tử.

Ý tưởng chính đằng sau chiến lược là: Đầu tiên tính giá trị RSI, sau đó xây dựng chỉ số RSI Stochastic dựa trên RSI, cụ thể là các giá trị K và D. Khi giá trị K vượt trên giá trị D, một tín hiệu mua được tạo ra. Khi giá trị K vượt dưới giá trị D, một tín hiệu bán được tạo ra. Để lọc các tín hiệu sai, chiến lược cũng giới thiệu Chỉ số Tỷ lệ Thay đổi (RVI) và đường trung bình động của nó để xác nhận.

II. Nguyên tắc chi tiết của chiến lược

  1. Tính toán giá trị RSI 14 giai đoạn.

  2. Xây dựng một chỉ số RSI Stochastic 14 giai đoạn dựa trên RSI để có được các giá trị K và D (D là trung bình động 3 giai đoạn của K).

  3. Tính toán RVI 5 giai đoạn và đường tín hiệu của nó (mức trung bình động của RVI).

  4. Khi K vượt trên D, nếu RVI > Signal Line và đoạn cuối RVI < Signal Line, một tín hiệu mua được tạo ra. Khi K vượt dưới D, nếu RVI < Signal Line và đoạn cuối RVI > Signal Line, một tín hiệu bán được tạo ra.

  5. Mở các vị trí dài hoặc ngắn dựa trên các tín hiệu được tạo ra.

III. Phân tích lợi thế

  1. Sự kết hợp của Stochastic RSI và xác nhận kép từ RVI có thể lọc hiệu quả các tín hiệu sai.

  2. Chỉ số RVI có thể phản ánh các điều kiện mua quá mức / bán quá mức ngắn hạn và tránh mở các vị trí ở các điểm cực.

  3. Chỉ số RSI Stochastic xác định các vùng mua quá mức / bán quá mức. Nó sử dụng đường chéo vàng / chết của chỉ số KDJ để xác định các điểm nhập cảnh.

  4. Kết quả kiểm tra ngược cho thấy chiến lược này đã đạt được hiệu suất tốt trên một số cặp tiền điện tử (như FCT / BTC).

IV. Phân tích rủi ro

  1. Việc đặt lệnh dừng lỗ không chính xác của các chiến lược dừng lại tương tự có thể dẫn đến việc dừng sớm.

  2. Tần số tín hiệu cao có thể dẫn đến phí giao dịch quá cao nên được xem xét.

  3. Cả chỉ số KDJ và RVI đều có thể tạo ra tín hiệu sai, dẫn đến tổn thất không cần thiết.

  4. Các thông số chiến lược cần phải được tối ưu hóa cho các cặp giao dịch khác nhau.

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

  1. Thêm stop loss di chuyển để khóa lợi nhuận.

  2. Tối ưu hóa các thông số RVI và các thông số RSI Stochastic cho các tín hiệu sạch hơn.

  3. Thêm kiểm soát kích thước giao dịch để tránh đơn đặt hàng quá lớn.

  4. Thêm các cơ chế lọc để tránh mở các vị trí ở mức không thuận lợi.

  5. Kiểm tra trên các cặp tiền điện tử khác nhau để tìm ra phù hợp nhất.

VI. Tóm tắt chiến lược

Chiến lược này đầu tiên xây dựng một chỉ số RSI Stochastic dựa trên chỉ số RSI, sau đó sử dụng chỉ số RVI để xác nhận, để phát hiện các điều kiện mua quá mức / bán quá mức ngắn hạn và các vị trí mở tại các điểm chuyển đổi. Ưu điểm là xác nhận kép có thể lọc ra các tín hiệu sai. Nhược điểm là nguy cơ quá phù hợp các tham số. Nhìn chung, chiến lược này đã đạt được kết quả tốt trên một số cặp giao dịch. Tăng cường hơn có thể đạt được lợi nhuận nhất quán hơn.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Stochastic RSI", shorttitle="Stoch RSI", overlay = true)
Per = input(5, title="Length", minval=1)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
K = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
D = sma(K, smoothD)


rvi = sum(swma(close-open), Per)/sum(swma(high-low),Per)
sig = swma(rvi)
//plot(rvi, color=green, title="RVI")
//plot(sig, color=red, title="Signal")

//plot(K,  title="K")
//plot(D,  title="D")
Dn = K <= D  and K > 70 and rvi <= sig  and rvi[1] >= sig[1]
Up= K >= D  and K < 30 and rvi >= sig  and rvi[1] <= sig[1]
ARROW =  Up - Dn
plotarrow(ARROW, title="Down Arrow",  colordown=red, transp=0, maxheight=10, minheight=10)
plotarrow(ARROW, title="Up Arrow", colorup=lime,  transp=0, maxheight=10, minheight=10)
long = crossover(Up, Dn)
short = crossunder(Up, Dn)
last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

//plot(long_signal, "BUY", color=green)
//plot(short_signal, "SELL", color=red)
strategy.entry("BUY", strategy.long, when=long_signal)
strategy.entry("SELL", strategy.short, when=short_signal)


Thêm nữa