Chiến lược giao dịch theo khung thời gian dựa trên chỉ báo RSI


Ngày tạo: 2023-12-29 14:12:54 sửa đổi lần cuối: 2023-12-29 14:12:54
sao chép: 0 Số nhấp chuột: 647
1
tập trung vào
1623
Người theo dõi

Chiến lược giao dịch theo khung thời gian dựa trên chỉ báo RSI

Tổng quan

Chiến lược này là một chiến lược bán tháo BTC trên khung thời gian dựa trên chỉ số RSI. Chiến lược này lấy đường cong VWAP bằng cách tính giá trung bình cân bằng giao dịch cho mỗi đường K (VWAP) và áp dụng RSI cho đường cong đó.

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

  1. Tính trung bình trọng lượng giao dịch (VWAP) cho mỗi đường K, tạo ra một đường cong VWAP
  2. Sử dụng RSI trên đường cong VWAP, tham số là 20 ngày, đường mua quá mức là 85, đường bán quá mức là 30
  3. Khi chỉ số RSI đi từ vùng siêu mua ((85)) xuống và vượt qua vùng siêu bán ((30), hãy mở lệnh tháo lỗ
  4. Sau khi nắm giữ 28 đường K, nếu chỉ số RSI vượt qua đường bán tháo một lần nữa (< 30), hãy giữ vị trí bằng phẳng

Phân tích lợi thế

  1. Sử dụng VWAP thay vì giá đóng cửa đơn giản, phản ánh tốt hơn giá giao dịch thực tế
  2. Sử dụng chỉ số RSI để xác định tình trạng quá mua và quá bán để tránh theo đuổi đà tăng và giảm
  3. Hoạt động qua khung thời gian để tránh bị mắc kẹt
  4. Rủi ro có thể kiểm soát được, 28 dây K bị hỏng.

Rủi ro và giải pháp

  1. Sự kiện bất ngờ khiến giá cả tăng nhanh chóng và không thể ngăn chặn
    • Sử dụng khung thời gian để giảm nguy cơ bị mắc kẹt
  2. Các tham số được đặt không chính xác, dễ bị bỏ lỡ cơ hội
    • Kiểm tra và tối ưu hóa các tham số RSI và đường mua bán quá mức
  3. K không thể đi qua khu bán lẻ
    • Kết hợp các chỉ số khác để đánh giá xu hướng, điều chỉnh các tham số linh hoạt

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

  1. Kiểm tra thêm các tham số để tìm ra tham số tốt nhất
  2. Kết hợp với MACD, KD và các chỉ số khác để xác định xem bạn đang ở trong khu vực mua quá mức hay bán quá mức
  3. Thiết lập các tham số thử nghiệm cho các giống khác nhau
  4. Tối ưu hóa cơ chế dừng lỗ, đặt mức dừng lỗ theo tỷ lệ biến động

Tóm tắt

Chiến lược này sử dụng kết hợp của VWAP và RSI để xác định tình trạng quá mua và quá bán của BTC, hoạt động theo cách vượt qua khung thời gian, có thể kiểm soát rủi ro một cách hiệu quả. Ý tưởng chiến lược rõ ràng và dễ hiểu, đáng để kiểm tra và tối ưu hóa hơn nữa, áp dụng cho giao dịch thực.

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


//@version=4

strategy("Soran Strategy 2 - SHORT 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 the Short and close shoret positions --------------- //

timebull = stratbull and time > stratstart
timebear = stratbear and time > stratstart


strategy.entry("Short", false, when = timebear and crossunder(rsiVWAP, ovrbgt), comment="")
strategy.close("Short", when = timebear and crossunder(rsiVWAP, ovrsld)[lateleave] or crossover(rsiVWAP, ovrsld), comment="")