Chiến lược giao dịch Bitlinc MARSI

Tác giả:ChaoZhang, Ngày: 2024-02-29 10:54:45
Tags:

img

Tổng quan

Chiến lược này là một chiến lược theo dõi dao động RSI dựa trên các điều chỉnh hàng 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 dải trên và dưới được thiết lập, các tín hiệu giao dịch được phát hành khi chỉ số RSI chạm vào dải trên và dưới.

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

  1. Thiết lập các tham số cho chiều dài MA, RSI, dải trên/dưới, lấy lợi nhuận/dừng lỗ, phạm vi chu kỳ giao dịch.
  2. Tính toán giá trị RSI, RSI = (Tỷ lệ thay đổi tăng trung bình) / ((Tỷ lệ thay đổi tăng trung bình + Tỷ lệ thay đổi giảm trung bình) * 100)
  3. Biểu đồ đường và băng tần RSI
  4. RSI vượt dưới dải dưới là tín hiệu dài, vượt trên dải trên là tín hiệu ngắn
  5. Vị trí mở với lệnh OCO
  6. Thực hiện dừng lỗ và lấy lợi nhuận dựa trên cài đặt

Phân tích lợi thế

  1. Đặt chu kỳ giao dịch hàng năm tránh môi trường bên ngoài không phù hợp.
  2. RSI phản ánh quá mua / quá bán hiệu quả.
  3. Các lệnh OCO + cài đặt dừng lỗ / lợi nhuận cho phép kiểm soát rủi ro hiệu quả.

Phân tích rủi ro

  1. Độ chính xác của đánh giá ngưỡng RSI không thể được đảm bảo, đánh giá sai có thể xảy ra.
  2. Các thiết lập chu kỳ hàng năm không phù hợp có thể bỏ lỡ cơ hội tốt hơn hoặc đi vào môi trường không phù hợp.
  3. Cài đặt stop loss quá lớn có thể dẫn đến tổn thất lớn, trong khi cài đặt lợi nhuận quá nhỏ mang lại lợi nhuận nhỏ.

Các phương pháp như điều chỉnh các thông số RSI, phạm vi chu kỳ giao dịch, tỷ lệ dừng lỗ / lợi nhuận có thể được sử dụng để tối ưu hóa.

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

  1. Kiểm tra các thông số RSI tối ưu cho các thị trường và chu kỳ khác nhau
  2. Phân tích mô hình chu kỳ thị trường tổng thể, thiết lập giai đoạn giao dịch hàng năm tốt nhất
  3. Xác định tỷ lệ dừng lỗ/lợi nhuận hợp lý thông qua backtest
  4. Tối ưu hóa lựa chọn sản phẩm giao dịch và kích thước vị trí
  5. Kết hợp với các kỹ thuật tốt hơn khác để tối ưu hóa hơn nữa

Tóm lại

Chiến lược này theo dõi xu hướng bằng các đặc điểm dao động chu kỳ hàng năm của RSI, kiểm soát hiệu quả rủi ro giao dịch.


/*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)



Thêm nữa