
Ý tưởng cốt lõi của chiến lược này là kết hợp đường trung bình Hull và bước sóng thực (ATR) để xác định hướng xu hướng thị trường và nhập vào sau khi xác nhận hướng xu hướng. Cụ thể hơn, là tính toán chênh lệch giữa đường trung bình Hull trong một chu kỳ nhất định và đường trung bình Hull của chu kỳ trước đó, khi chênh lệch tăng được đánh giá là xu hướng lạc quan, khi chênh lệch giảm được đánh giá là xu hướng giảm.
Chiến lược này chủ yếu dựa trên hai loại chỉ số Hull Average Line và ATR.
Đường trung bình Hull là một chỉ số theo dõi xu hướng được phát triển bởi nhà giao dịch tương lai người Mỹ Alan Hull. Đường trung bình Hull tương tự như đường trung bình di chuyển, nhưng đường trung bình Hull có độ nhạy cao hơn, có thể nắm bắt xu hướng thay đổi giá nhanh hơn. Chiến lược có một tham số có thể điều chỉnh hullLength để kiểm soát độ dài chu kỳ của đường trung bình Hull, để xác định hướng xu hướng giá hiện tại bằng cách tính toán chênh lệch giữa chu kỳ hiện tại và đường trung bình Hull của chu kỳ trước.
ATR là Average True Range, tức là dải sóng thực. Nó phản ánh mức độ biến động giá hàng ngày. Khi biến động tăng lên, dải sóng thực sẽ tăng lên; khi biến động giảm, dải sóng thực sẽ giảm.
Theo đó, chiến lược này có thể được giải thích như sau:
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Giải pháp tương ứng:
Có rất nhiều cách để tối ưu hóa chiến lược này, chủ yếu là từ các khía cạnh sau:
Chiến lược này tích hợp khả năng theo dõi xu hướng của đường trung bình Hull và khả năng đánh giá nhiệt độ của ATR, có thể lọc một số tín hiệu không hiệu quả khi xác nhận xu hướng và chọn thời điểm tham gia tích cực và có biến động lớn. Tối ưu hóa các tham số chỉ số và sử dụng các phương tiện quản lý rủi ro có thể tăng cường hiệu quả của chiến lược. Nói chung, chiến lược này kết hợp nhiều yếu tố theo dõi xu hướng và đánh giá nhiệt độ, có thể đạt được hiệu quả tốt hơn khi tham số được điều chỉnh và tối ưu hóa.
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// Hull cross and ATR
strategy("Hull cross and ATR", shorttitle="H&ATR", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
keh=input(title="Hull Length",defval=50)
length = input(title="ATR Length", defval=50, minval=1)
smoothing = input(title="ATR Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])
p=input(ohlc4,title="Price data")
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
ma_function(source, length) =>
if smoothing == "RMA"
rma(p, length)
else
if smoothing == "SMA"
sma(p, length)
else
if smoothing == "EMA"
ema(p, length)
else
wma(p, length)
plot(ma_function(tr(true), length), title = "ATR", color=black, transp=50)
closelong = n1<n2
if (closelong)
strategy.close("buy")
closeshort = n1>n2
if (closeshort)
strategy.close("sell")
if (ma_function(tr(true), length)<p and p>p[length] and n1>n2)
strategy.entry("buy", strategy.long, comment="BUY")
if (ma_function(tr(true), length)>p and p<p[length] and n1<n2)
strategy.entry("sell", strategy.short, comment="SELL")