Chiến lược giao dịch RSI swing dựa trên điều chỉnh trong năm


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

Chiến lược giao dịch RSI swing dựa trên điều chỉnh trong năm

Tổng quan

Chiến lược này là một chiến lược giao dịch dao động RSI dựa trên điều chỉnh trong năm, bằng cách theo dõi các đặc điểm dao động của chỉ số RSI giữa các đường đi lên và xuống được thiết lập, để phát ra tín hiệu giao dịch khi chỉ số RSI chạm vào đường đi xuống.

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

  1. Thiết lập chiều dài đường trung bình MA, tham số RSI, đường đua lên xuống, tham số dừng lỗ, phạm vi chu kỳ giao dịch
  2. Tính toán RSI, RSI = ((trung bình tăng) / ((trung bình tăng + trung bình giảm)*100
  3. Hình vẽ chỉ số RSI và đường đi
  4. Chỉ số RSI trên đi xuống đường ray là nhiều tín hiệu, dưới đi xuống đường ray là tín hiệu trống
  5. Tạo danh sách OCO
  6. Hạn chế và dừng theo logic dừng lỗ theo cài đặt

Phân tích lợi thế chiến lược

  1. Một số môi trường bên ngoài không phù hợp có thể được tránh bằng cách thiết lập chu kỳ giao dịch trong năm.
  2. Chỉ số RSI có thể phản ánh hiệu quả tình trạng quá mua quá bán và có thể lọc một phần tiếng ồn bằng cách đặt các giao dịch xung đột trong một khoảng thời gian hợp lý.
  3. OCO được kết hợp với thiết lập dừng lỗ, có thể kiểm soát rủi ro hiệu quả.

Phân tích rủi ro chiến lược

  1. RSI không đảm bảo tính chính xác của phán đoán quan trọng, có thể có một số rủi ro sai lầm.
  2. Việc thiết lập không đúng chu kỳ giao dịch trong năm có thể làm bạn bỏ lỡ cơ hội giao dịch tốt hơn hoặc vào môi trường giao dịch không phù hợp.
  3. Đặt điểm dừng quá lớn có thể gây ra tổn thất lớn, đặt điểm dừng quá nhỏ có thể gây ra lợi nhuận quá nhỏ.

Có thể tối ưu hóa bằng cách điều chỉnh các tham số RSI, phạm vi thời gian chu kỳ giao dịch, tỷ lệ dừng lỗ.

Hướng tối ưu hóa chiến lược

  1. Kiểm tra các giá trị tối ưu của các tham số RSI trong các chu kỳ khác nhau của các thị trường khác nhau
  2. Phân tích quy luật chu kỳ của thị trường tổng thể để thiết lập thời gian giao dịch tốt nhất trong năm
  3. Xác định tỷ lệ dừng lỗ hợp lý bằng cách đo đạc lại
  4. Tối ưu hóa lựa chọn loại giao dịch và tăng quy mô nắm giữ
  5. Tối ưu hóa kết hợp với các kỹ thuật hoặc chỉ số giao dịch tốt hơn khác

Tóm tắt

Chiến lược này theo dõi xu hướng giao dịch thông qua các dấu hiệu dao động của chỉ số RSI trong một chu kỳ nhất định trong năm, kiểm soát rủi ro giao dịch hiệu quả. Hiệu quả chiến lược cao hơn có thể đạt được bằng cách tối ưu hóa tham số và tối ưu hóa quy tắc.

Mã nguồn chiến lược
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Bitlinc MARSI Study AST",shorttitle="Bitlinc MARSI Study AST",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,initial_capital=1000,currency="USD",pyramiding=0, calc_on_order_fills=false)

// === General Inputs ===
lengthofma = input(62, minval=1, title="Length of MA")
len = input(31, minval=1, title="Length")
upperband = input(89, minval=1, title='Upper Band for RSI')
lowerband = input(10, minval=1, title="Lower Band for RSI")
takeprofit =input(1.25, title="Take Profit Percent")
stoploss =input(.04, title ="Stop Loss Percent")
monthfrom =input(8, title = "Month Start")
monthuntil =input(12, title = "Month End")
dayfrom=input(1, title= "Day Start")
dayuntil=input(31, title= "Day End")

// === Innput Backtest Range ===
//FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
//FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
//FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
//ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
//ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
//ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === Create RSI ===
src=sma(close,lengthofma)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi,linewidth = 2, color=purple)

// === Plot Bands ===
band1 = hline(upperband)
band0 = hline(lowerband)
fill(band1, band0, color=blue, transp=95)

// === Entry and Exit Methods ===
longCond =  crossover(rsi,lowerband)
shortCond =  crossunder(rsi,upperband)

// === Long Entry Logic ===
if (  longCond ) 
    strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND", comment="LONG")
else
    strategy.cancel(id="LONG")

// === Short Entry Logic ===    
if ( shortCond   ) 
    strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND",  comment="SHORT")
else
    strategy.cancel(id="SHORT")

// === Take Profit and Stop Loss Logic ===
//strategy.exit("Take Profit LONG", "LONG", profit = close * takeprofit / syminfo.mintick, loss = close * stoploss / syminfo.mintick)
//strategy.exit("Take Profit SHORT", "SHORT", profit = close * takeprofit / syminfo.mintick, loss = close * stoploss / syminfo.mintick)
strategy.exit("LONG TAKE PROFIT", "LONG", profit = close * takeprofit / syminfo.mintick)
strategy.exit("SHORT STOP LOSS", "SHORT", profit = close * takeprofit / syminfo.mintick)
strategy.exit("LONG STOP LOSS", "LONG", loss = close * stoploss / syminfo.mintick)
strategy.exit("SHORT STOP LOSS", "SHORT", loss = close * stoploss / syminfo.mintick)