RSI Chiến lược giao dịch số dư ngắn dài

Tác giả:ChaoZhang, Ngày: 2023-10-30 15:49:35
Tags:

img

Tổng quan

Chiến lược này sử dụng sự kết hợp của các chỉ số RSI trên các khung thời gian khác nhau để xác định xem thị trường hiện tại có bị mua quá nhiều hay bán quá nhiều hay không, và kết hợp mối quan hệ giữa giá và đường trung bình động để tạo ra tín hiệu mua và bán. Mục tiêu là mua vào các lần giảm và bán trên các cuộc biểu tình để kiếm lợi nhuận trong quá trình củng cố.

Chiến lược logic

  1. Tính toán các giá trị RSI của khung thời gian 5 phút, 15 phút và 1 giờ. Khi RSI 5 phút, 15 phút và 1 giờ đều dưới 25 cùng một lúc, nó được đánh giá là tình trạng bán quá mức và tạo ra tín hiệu mua. Khi RSI 5 phút, 15 phút và 1 giờ đều trên 75 cùng một lúc, nó được đánh giá là tình trạng mua quá mức và tạo ra tín hiệu bán.

  2. Việc phá vỡ đường trung bình động 21 ngày cũng hoạt động như một tín hiệu giao dịch. Nếu giá thấp hơn đường trung bình động, một tín hiệu mua được tạo ra. Nếu giá cao hơn đường trung bình động, một tín hiệu bán được tạo ra.

  3. Dựa trên vị trí hiện tại, kích thước giao dịch ban đầu và các quy tắc kim tự tháp được thiết lập: 2 hợp đồng cho mục đầu tiên, và sau đó thêm 1 hợp đồng mỗi lần cho đến khi vị trí đạt 2 hợp đồng.

  4. Stop loss được kích hoạt khi lỗ đạt 3%.

Ưu điểm

  1. Sử dụng các chỉ số RSI trên nhiều khung thời gian để xác định các điều kiện mua quá mức và bán quá mức cải thiện độ tin cậy của tín hiệu.

  2. Kết hợp trung bình động tạo ra các tín hiệu giao dịch bổ sung và mở rộng các cơ hội giao dịch.

  3. Thiết lập kiểm soát kích thước vị trí và tỷ lệ lợi nhuận/mất cho dừng lỗ và lấy lợi nhuận quản lý rủi ro.

  4. Tăng quy mô với số lượng cố định mở rộng tiềm năng lợi nhuận.

Rủi ro

  1. RSI rủi ro chênh lệch. Giá có thể tiếp tục xu hướng trong một khoảng thời gian sau khi RSI đạt ngưỡng mua quá mức hoặc bán quá mức trước khi đảo ngược.

  2. Tín hiệu giao dịch trung bình di chuyển có thể gây hiểu lầm.

  3. Định kích thước vị trí không chính xác và cài đặt tỷ lệ lợi nhuận/mất dẫn đến kiểm soát rủi ro không chính xác.

  4. Điều kiện kim tự tháp cần phải được thiết lập hợp lý để tránh gia tăng tổn thất.

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

  1. Điều chỉnh các thông số RSI và kiểm tra các kết hợp thời gian khác nhau để tìm ra các tín hiệu mua quá mức / bán quá mức đáng tin cậy hơn.

  2. Kiểm tra các đường trung bình động khác nhau làm tín hiệu giao dịch phụ hoặc các chỉ số kỹ thuật khác.

  3. Tối ưu hóa kích thước vị trí và các quy tắc dừng lỗ / lấy lợi nhuận để xây dựng các cơ chế kiểm soát rủi ro khoa học hơn.

  4. Tối ưu hóa các điều kiện kim tự tháp để ngăn ngừa sự gia tăng tổn thất.

Tóm lại

Chiến lược này sử dụng chỉ số RSI trên nhiều khung thời gian để xác định tiềm năng xu hướng và đạt được tỷ lệ thắng cao hơn. Các tín hiệu bổ sung được tạo ra với đường trung bình động để mở rộng cơ hội giao dịch. Rủi ro được quản lý thông qua định kích thước vị trí, dừng lỗ / lấy lợi nhuận và kim tự tháp số lượng cố định.


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

//@version=3
strategy("5M_RSI_Strategy", overlay=true, pyramiding = 1)
len =14 
Initial_Trade_Size = 2
up = rma(max(change(close), 0), len)
down = rma(-min(change(close), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
RSI_1h = request.security(syminfo.tickerid, "60", rsi)
RSI_3h = request.security(syminfo.tickerid, "180", rsi)
RSI_15m = request.security(syminfo.tickerid, "15", rsi)
RSI_5m = request.security(syminfo.tickerid, "5", rsi)
RSI_1m = request.security(syminfo.tickerid, "1", rsi)
ema21_5 = ema(request.security(syminfo.tickerid, "5", close), 21)
ema21_15 = ema(request.security(syminfo.tickerid, "15", close), 21)
//(RSI_3h<=25) and  (RSI_1h<=25) and (RSI_15m<=25) and
Positive = ((RSI_5m<=25) and (RSI_15m<=25) and (RSI_1h<=25))?true:false
//alertcondition(Positive, title='POS', message='POS')        
//plotshape(Positive, style=shape.triangleup,location=location.belowbar, color=green,size =size.tiny)
Negative = (( RSI_5m>=75) and ( RSI_15m>=75) and ( RSI_1h>=75))?true:false
//alertcondition(Negative, title='NEG', message='NEG')
//plotshape(Negative, style=shape.triangledown,location=location.abovebar, color=red,size=size.tiny)          Positive and   Negative and 

lastordersize = abs(strategy.position_size)>=Initial_Trade_Size?abs(strategy.position_size):Initial_Trade_Size
//lastordersize =1
// and ((ema21_15-low)/ema21_15) > 0.077
//Adding to position rules
if (abs(strategy.position_size) >= Initial_Trade_Size and (abs(close - strategy.position_avg_price)/abs(strategy.position_avg_price)>0.03))
    if(strategy.position_avg_price > close and strategy.position_size > 0)
        strategy.entry("Add", strategy.long , qty = lastordersize , when = true)
    if(strategy.position_avg_price < close and strategy.position_size < 0)
        strategy.entry("Add", strategy.short, qty = lastordersize , when = true)
if (strategy.position_size == 0)
    if (Positive or ((ema21_5-low)/ema21_5) > 0.07)
        strategy.entry("1St Entry", strategy.long , qty = lastordersize , when = true)
    // and ((high-ema21_15)/ema21_15) > 0.077
    if (Negative or ((high-ema21_5)/ema21_5) > 0.07)
        strategy.entry("1St Entry", strategy.short, qty = lastordersize , when = true)
//lastordersize := lastordersize * 2
//or (strategy.openprofit / abs(strategy.position_size * close))>=0.01
if(cross(ema21_5, high) or cross(ema21_5, low))
    strategy.close_all()

Thêm nữa