Chiến lược xu hướng định lượng Super Z

Tác giả:ChaoZhang, Ngày: 2023-11-27 18:41:59
Tags:

img

Tổng quan

Chiến lược xu hướng định lượng Super Z là một chiến lược theo dõi xu hướng dựa trên các chỉ số định lượng. Chiến lược sử dụng các chỉ số tùy chỉnh kết hợp với chỉ số Super Trend để xác định và theo dõi xu hướng.

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

Chỉ số cơ bản của chiến lược này là chỉ số định lượng tùy chỉnh VHMA. Chỉ số VHMA được tính dựa trên đường trung bình di chuyển Hull. Bằng cách áp dụng hàm gốc vuông để làm mịn MA Hull, nó tạo thành một đường cong với độ mịn tốt.

Chiến lược này cũng kết hợp với chỉ số siêu xu hướng. Chỉ số siêu xu hướng có thể phát hiện xu hướng giá chu kỳ dài hơn để hỗ trợ chỉ số VHMA trong việc xác định hướng xu hướng. Khi giá vượt qua đường siêu xu hướng, nó đại diện cho sự đảo ngược xu hướng.

Do đó, chiến lược này sử dụng chỉ số VHMA để đánh giá hướng xu hướng ngắn hạn, được hỗ trợ bởi chỉ số Super Trend để xác định điểm chuyển hướng xu hướng dài hạn, nhận ra việc theo dõi xu hướng tổng thể.

Phân tích lợi thế

Chiến lược này có những lợi thế sau:

  1. Chỉ số VHMA có độ mượt mạnh và có thể giảm tín hiệu sai. Nó có thể đánh giá chính xác và đáng tin cậy hướng xu hướng;

  2. Kết hợp với chỉ số Super Trend, nó có thể nhanh chóng phát hiện sự đảo ngược xu hướng dài hạn và nắm bắt thời gian mua và bán;

  3. Sử dụng các đường K rắn màu khác nhau và đường K rỗng để mô tả mối quan hệ kích thước giữa giá đóng và giá mở để tạo ra một chỉ số trực quan để giúp đánh giá xu hướng;

  4. Đăng ký thiết kế nhiều khung thời gian có thể xác định hướng xu hướng trên các khung thời gian cao cấp và phát ra các tín hiệu giao dịch trên các khung thời gian thấp hơn để đạt được lọc hiệu quả;

  5. Các thông số chiến lược được tối ưu hóa cho sự ổn định và phù hợp với các môi trường thị trường khác nhau.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

  1. Các chỉ số định lượng có hiệu ứng backtesting và hiệu ứng thực tế có thể yếu hơn so với backtesting;

  2. Việc thiết lập không đúng các thông số chỉ số Super Trend có thể dẫn đến việc bỏ lỡ cơ hội giao dịch hoặc giao dịch không cần thiết;

  3. Các thiết kế nhiều khung thời gian cũng có thể thất bại trong điều kiện giao dịch thực tế.

Các biện pháp đối phó:

  1. Tăng cài đặt trượt và tối ưu hóa các thông số để giảm tác dụng backtest;

  2. Điều chỉnh các thông số chỉ số Super Trend và tối ưu hóa các thiết lập thông số;

  3. Kiểm tra nhiều phương pháp khớp khung thời gian để đảm bảo sự ổn định nhiều khung thời gian.

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

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kiểm tra các chỉ số trung bình động trơn khác nhau để thay thế chỉ số VHMA;

  2. Hãy thử các chỉ số xu hướng khác nhau để thay thế chỉ số Super Trend;

  3. Tăng các thông số chỉ số đào tạo mô hình học máy.

Các biện pháp tối ưu hóa này có thể cải thiện khả năng thích nghi của các chiến lược với các điều kiện thị trường phức tạp.

Tóm lại

Chiến lược xu hướng định lượng Super Z thực hiện đánh giá và theo dõi xu hướng giá thông qua chỉ số xu hướng tùy chỉnh VHMA kết hợp với chỉ số Super Trend. Chiến lược có sự ổn định tốt và hiệu quả thực tế tuyệt vời. Thông qua kiểm tra và tối ưu hóa liên tục, chiến lược này có tiềm năng trở thành một chiến lược theo dõi xu hướng định lượng hiệu quả và ổn định.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//Original script
//https://www.tradingview.com/script/wYknDlLx-super-Z/

//@version=4
strategy("Super Z strategy - Thanks to Rafael Zioni", shorttitle="Super Z strategy",overlay=true )
src5 = input(close)
    
tf = input(1440)
len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   tf / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7

ma = ema(src5*volume, len5) / ema(volume, len5)


//script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/

src1 = ma

p(src1, len5) =>
    n = 0.0
    s = 0.0
    for i = 0 to len5 - 1
        w = (len5 - i) * len5
        n := n + w
        s := s + src5[i] * w
    s / n

hm = 2.0 * p(src1, floor(len5 / 2)) - p(src1, len5)
vhma = p(hm, floor(sqrt(len5)))
lineColor = vhma > vhma[1] ? color.lime : color.red
plot(vhma, title="VHMA", color=lineColor ,linewidth=3)
hColor = true,vis = true
hu = hColor ? (vhma > vhma[2] ? #00ff00 : #ff0000) : #ff9800

vl = vhma[0]
ll = vhma[1]
m1 = plot(vl, color=hu, linewidth=1, transp=60)
m2 = plot(vis ? ll : na,  color=hu, linewidth=2, transp=80)

fill(m1, m2,  color=hu, transp=70)
//

b = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   60 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7



//
res5 = input("D", type=input.resolution)

o = security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on)
c = security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on)
hz = security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on)
l = security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on)



col = c >= o ? color.lime : color.red

ppo = plot(b ? o >= c ? hz : l : o, color=col, title="Open", style=plot.style_stepline, transp=100)
ppc = plot(b ? o <= c ? hz : l : c, color=col, title="Close", style=plot.style_stepline, transp=100)

plot(b and hz > c ? hz : na, color=col, title="High", style=plot.style_circles, linewidth=2,transp=60)
plot(b and l < c ? l : na, color=col, title="Low", style=plot.style_circles,linewidth=2, transp=60)

fill(ppo, ppc, col)

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

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

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

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

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

// Calculate SuperTrend Line
st_line = trend ==1 ? up_trend : down_trend

// Plotting
//plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy=crossover( c, st_line)
sell=crossunder(c, st_line)
signal=input(false)

/////////////// Plotting /////////////// 
plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.lime)
plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.red)


if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)

Thêm nữa