Chiến lược giao dịch định lượng dựa trên các chỉ báo xu hướng TRSI và SUPER


Ngày tạo: 2023-12-15 16:05:51 sửa đổi lần cuối: 2023-12-15 16:05:51
sao chép: 0 Số nhấp chuột: 738
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch định lượng dựa trên các chỉ báo xu hướng TRSI và SUPER

Tổng quan

Chiến lược này kết hợp các chỉ số tương đối mạnh mẽ (TRSI) và chỉ số siêu xu hướng (SUPER Trend) để tạo thành một bộ chiến lược giao dịch định lượng đầy đủ hơn. Chiến lược này chủ yếu được sử dụng để nắm bắt xu hướng đường dài và trung bình, đồng thời sử dụng các chỉ số ngắn hạn để lọc tín hiệu giao dịch ồn ào.

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

  1. Tính toán TRSI để xác định thị trường có đang quá mua hay quá bán và phát ra tín hiệu mua và bán
  2. Sử dụng chỉ số SUPER Trend để lọc tín hiệu tiếng ồn, xác nhận xu hướng cơ bản
  3. Thiết lập điểm dừng lỗ ở các giai đoạn khác nhau trong bảng lợi nhuận

Cụ thể, chiến lược đầu tiên tính toán chỉ số TRSI để xác định thị trường có khu vực bán tháo hay không, sau đó tính toán chỉ số SUPER Trend để xác định hướng của xu hướng lớn. Kết hợp cả hai để phát tín hiệu giao dịch. Sau đó, thiết lập điểm dừng lỗ, thu hồi lợi nhuận và thu hồi tiền theo tỷ lệ khác nhau ở các giai đoạn khác nhau.

Phân tích lợi thế

Chiến lược này có một số lợi thế:

  1. Kết hợp nhiều chỉ số, tăng độ chính xác tín hiệu. TRSI đánh giá thời điểm, SUPER Trend lọc hướng.
  2. Nó được sử dụng để giao dịch xu hướng đường dài và trung bình.
  3. Cài đặt khống chế thiệt hại hợp lý, thu hồi lợi nhuận ở các giai đoạn khác nhau với tỷ lệ khác nhau, kiểm soát rủi ro hiệu quả.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Các nhà đầu tư không thể nắm bắt được các cơ hội giao dịch ngắn hạn.
  2. Các tham số TRSI được thiết lập không chính xác, có thể bỏ lỡ khoảng quá mua quá bán.
  3. Các tham số SUPER Trend được đặt không đúng, có thể phát ra tín hiệu sai.
  4. Khoảng thời gian dừng lỗ quá lớn để kiểm soát rủi ro hiệu quả.

Chúng ta có thể tối ưu hóa đối với những rủi ro này bằng cách:

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

  1. Kết hợp với các chỉ số ngắn hơn, xác định thêm cơ hội giao dịch.
  2. Điều chỉnh tham số TRSI để thu hẹp khoảng cách.
  3. Kiểm tra và tối ưu hóa các tham số SUPER Trend.
  4. Thiết lập dừng nổi, theo dõi đường dừng trong thời gian thực.

Tóm tắt

Chiến lược này sử dụng nhiều chỉ số như TRSI và SUPER Trend để tạo ra một chiến lược giao dịch định lượng hoàn chỉnh hơn. Có thể xác định hiệu quả xu hướng đường dài trung bình, đồng thời thiết lập rủi ro kiểm soát dừng lỗ.

Mã nguồn chiến lược
/*backtest
start: 2022-12-14 00:00:00
end: 2023-11-26 05:20:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4
strategy(title = "SuperTREX strategy", overlay = true)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
length = input( 14 )
overSold = input( 35 )
overBought = input( 70 )
HTF = input("W", type=input.resolution)
ti = change( time(HTF) ) != 0
p = fixnan( ti ? close : na )

vrsi = rsi(p, length)
price = close
var bool long = na
var bool short = na

long :=crossover(vrsi,overSold) 
short := crossunder(vrsi,overBought)

var float last_open_long = na
var float last_open_short = na

last_open_long := long ? close : nz(last_open_long[1])
last_open_short := short ? close : nz(last_open_short[1])


entry_value =last_open_long
entry_value1=last_open_short

xy=(entry_value+entry_value)/2

// INPUTS //
st_mult   = input(4,   title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01)
st_period = input(10, title = 'SuperTrend Period',     minval = 1)

// CALCULATIONS //
up_lev =xy - (st_mult * atr(st_period))
dn_lev =xy + (st_mult * atr(st_period))

up_trend   = 0.0
up_trend   := entry_value[1] > up_trend[1]   ? max(up_lev, up_trend[1])   : up_lev

down_trend = 0.0
down_trend := entry_value1[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := close > down_trend[1] ? 1: close < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend ==1 ? up_trend : down_trend
plot(xy,color = trend == 1 ? color.green : color.red)

buy=crossover( close, st_line) 
sell1=crossunder(close, st_line) 
 


buy1=buy
//

sell=sell1


// STRATEGY

plotshape(buy , title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)  //plot for sell icon
// Take profit

//
l = buy 
s1=sell 
if l 
    strategy.entry("buy", strategy.long)
if s1 
    strategy.entry("sell", strategy.short)
per(pcnt) =>  strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=25, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=2, minval=0.01)
tp2=input(title=" Take profit2", defval=4, minval=0.01)
tp3=input(title=" Take profit3", defval=6, minval=0.01)
tp4=input(title=" Take profit4", defval=8, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)