Chiến lược giao dịch tự động dài hạn và ngắn hạn dựa trên chỉ báo RSI


Ngày tạo: 2024-02-29 14:14:01 sửa đổi lần cuối: 2024-02-29 14:14:01
sao chép: 25 Số nhấp chuột: 686
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch tự động dài hạn và ngắn hạn dựa trên chỉ báo RSI

Tổng quan

Chiến lược này được thiết kế dựa trên các chỉ số RSI để tạo ra một hệ thống giao dịch tự động không có giá. Hệ thống này có thể tự động tham gia khi RSI quá mua và quá bán và chủ động dừng lỗ khi các điều kiện cụ thể được kích hoạt.

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

Chiến lược này sử dụng chỉ số RSI để đánh giá hiện tượng mua bán quá mức của thị trường. Cụ thể, khi chỉ số RSI thấp hơn đường bán quá mức được thiết lập, hãy mua nhiều; khi chỉ số RSI cao hơn đường mua quá mức được thiết lập, hãy mua nhiều.

Ngoài ra, chiến lược này cũng đặt điều kiện thoát ra. Nếu chỉ số RSI vượt qua đường mua một lần nữa sau khi làm nhiều, sẽ kích hoạt lệnh dừng lỗ nhiều lần. Tương tự, nếu chỉ số RSI vượt qua đường bán một lần nữa sau khi làm rỗng, sẽ kích hoạt lệnh dừng lỗ trống.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là sử dụng chỉ số RSI để đánh giá sự quá mua quá bán của thị trường, một phương pháp phân tích kỹ thuật đáng tin cậy trong giao dịch định lượng. So với chiến lược trung bình di chuyển đơn giản, chiến lược này có thể nắm bắt chính xác hơn các điểm biến đổi của thị trường, do đó cải thiện lợi nhuận của hệ thống giao dịch.

Ngoài ra, chiến lược này đặt ra các điều kiện thoát ra khỏi thị trường, có thể kiểm soát hiệu quả rủi ro mất mát trong tình trạng một chiều của thị trường. Điều này tạo ra sự khác biệt rõ rệt với chiến lược theo xu hướng truyền thống, có thể tránh được trường hợp giữ vị trí bị mắc kẹt.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược này là các tín hiệu giao dịch của chỉ số RSI có thể bị hiểu sai. Không có chỉ số kỹ thuật nào có thể xác định chính xác 100% xu hướng thị trường, chỉ số RSI cũng không ngoại lệ.

Để giảm thiểu rủi ro này, chiến lược này đã thiết lập đường dừng lỗ. Tuy nhiên, trong trường hợp đơn phương, khả năng kích hoạt đường dừng lỗ cũng sẽ cao hơn. Tại thời điểm này, cần can thiệp bằng tay để đóng các vị trí sai. Nói chung, chiến lược này là một hệ thống giao dịch tự động, cũng cần giám sát và điều chỉnh bằng tay để có hiệu quả tối đa.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. Kết hợp nhiều chỉ số xác nhận tín hiệu vào, tránh sai nhập do chỉ số RSI đánh giá một mình. Ví dụ, có thể tham gia chỉ số trung bình di chuyển, v.v.

  2. Tối ưu hóa các tham số RSI, tìm các tham số dài RSI phù hợp hơn, để đánh giá quá mua quá bán chính xác hơn.

  3. Tối ưu hóa thiết lập đường dừng để tránh tổn thất tối đa, nhưng cũng đảm bảo rằng đường dừng không quá nhạy cảm.

Tóm tắt

Nhìn chung, chiến lược giao dịch tự động dựa trên RSI này có lợi thế trong việc xác định hiệu quả tình trạng thị trường quá mua và quá bán. Nó nhằm mục đích kiếm lợi nhuận từ sự đảo ngược của thị trường bằng cách vào các vị trí đầu nhiều và đầu trống trong các mức RSI cực đoan.

Mã nguồn chiến lược
/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4

strategy("Soran Strategy 2 - LONG SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)


// ----------------- Inputs ----------------- //

reso = input(title="Resolution", type=input.resolution, defval="")
length = input(20, title="RSI Length", type=input.integer)
ovrsld = input(30, "RSI Oversold level", type=input.float)
ovrbgt = input(85, "RSI Overbought level", type=input.float)
lateleave = input(28, "Number of candles", type=input.integer)
// lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition).

// best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28


stratbull = input(title="Enter longs ?", type = input.bool, defval=true)
stratbear = input(title="Enter shorts ?", type = input.bool, defval=true)

stratyear = input(2020, title = "Strategy Start Year")
stratmonth = input(1, title = "Strategy Start Month")
stratday = input(1, title = "Strategy Start Day")
stratstart = timestamp(stratyear,stratmonth,stratday,0,0)


// --------------- Laguerre ----------------- //

laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false)
gamma = input(0.06, title="Laguerre Gamma")

laguerre_cal(s,g) =>
    l0 = 0.0
    l1 = 0.0
    l2 = 0.0
    l3 = 0.0
    l0 := (1 - g)*s+g*nz(l0[1])
    l1 := -g*l0+nz(l0[1])+g*nz(l1[1])
    l2 := -g*l1+nz(l1[1])+g*nz(l2[1])
    l3 := -g*l2+nz(l2[1])+g*nz(l3[1])
    (l0 + 2*l1 + 2*l2 + l3)/6


// ---------------- Rsi VWAP ---------------- //

rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length))

rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV


// ------------------ Plots ----------------- //

prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line)
hline = plot(ovrbgt, color = color.gray, style=plot.style_line)
lline = plot(ovrsld, color = color.gray, style=plot.style_line)
fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30)
fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30)


// ---------------- Positions: only shows Buy and close Buy positions --------------- //

timebull = stratbull 
timebear = stratbear 

strategy.entry("Long", true, when = timebull and crossover(rsiVWAP, ovrsld), comment="")
strategy.close("Long", when = timebull and crossover(rsiVWAP, ovrbgt)[lateleave] or crossunder(rsiVWAP, ovrbgt), comment="")