
Chiến lược định lượng xu hướng siêu 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 này sử dụng các chỉ số tùy chỉnh kết hợp với các chỉ số siêu xu hướng để đánh giá và theo dõi xu hướng.
Chỉ số trung tâm 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 trung bình di chuyển của Hull, xử lý lại Hull MA bằng hàm gốc vuông, tạo thành đường cong có độ mịn tốt. Đường cong VHMA có thể xác định hướng xu hướng của giá, đại diện cho giá trong xu hướng tăng khi VHMA tăng và đại diện cho xu hướng giảm khi nó giảm.
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á trong một chu kỳ dài hơn, hỗ trợ chỉ số VHMA trong việc xác định xu hướng. Khi giá vượt qua đường siêu xu hướng, đại diện cho sự đảo ngược xu hướng.
Do đó, chiến lược này sử dụng chỉ số VHMA để xác định hướng xu hướng ngắn hạn, hỗ trợ bằng chỉ số xu hướng siêu để xác định điểm biến xu hướng dài hạn, để theo dõi xu hướng tổng thể.
Chiến lược này có những ưu điểm sau:
Chỉ số VHMA có tính mịn màng, có thể giảm tín hiệu giả và xác định hướng xu hướng một cách chính xác và đáng tin cậy;
Kết hợp với các chỉ số siêu xu hướng, có thể phát hiện được sự đảo ngược xu hướng dài hạn và nắm bắt được thời gian mua và bán;
Sử dụng các màu sắc khác nhau thực thể K đường và đường K trống mô tả giá đóng cửa và giá mở cửa mối quan hệ kích thước, hình thành các chỉ số thị giác, hỗ trợ phán đoán xu hướng;
Sử dụng thiết kế nhiều khung thời gian để đánh giá xu hướng trong khung thời gian cấp cao, phát tín hiệu giao dịch trong khung thời gian cấp thấp, cho phép lọc hiệu quả;
Các tham số chiến lược được thiết kế tối ưu, ổn định và phù hợp với nhiều môi trường thị trường.
Chiến lược này cũng có những rủi ro sau:
Các chỉ số định lượng có hiệu quả phản hồi, hiệu quả thực tế có thể yếu hơn so với phản hồi;
Thiết lập không chính xác các tham số của chỉ số siêu xu hướng có thể dẫn đến việc bỏ lỡ cơ hội giao dịch hoặc tăng giao dịch vô nghĩa;
Thiết kế khung thời gian đa dạng cũng có thể thất bại trong điều kiện ổ đĩa thực.
Phản ứng:
Tăng thiết lập điểm trượt, tối ưu hóa tham số và giảm hiệu ứng phản hồi;
Điều chỉnh các tham số chỉ số siêu xu hướng, tối ưu hóa các thiết lập tham số;
Kiểm tra nhiều khung thời gian để đảm bảo tính ổn định của khung thời gian.
Chiến lược này có thể được tối ưu hóa bằng cách:
Kiểm tra các chỉ số trung bình di chuyển mịn khác thay vì chỉ số VHMA;
Cố gắng sử dụng các chỉ số xu hướng khác thay vì chỉ số siêu xu hướng.
Thêm tham 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 ứng của chiến lược đối với các tình huống phức tạp.
Chiến lược định lượng xu hướng siêu Z thông qua chỉ số xu hướng tùy chỉnh VHMA kết hợp với chỉ số siêu xu hướng, để đánh giá và theo dõi xu hướng giá. Chiến lược ổn định tốt, hiệu quả trên ổ đĩa tốt. Bằng cách liên tục thử nghiệm và tối ưu hóa, chiến lược này có khả năng trở thành 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)