Ý tưởng cốt lõi của chiến lược này là xác định hướng xu hướng thị trường bằng cách kết hợp trung bình chuyển động Hull và phạm vi thực tế trung bình (ATR), và nhập vào các vị trí sau khi hướng xu hướng được xác nhận. Cụ thể, nó tính toán sự khác biệt giữa các đường trung bình chuyển động Hull của một giai đoạn nhất định và giai đoạn trước đó. Khi sự khác biệt tăng, nó chỉ ra xu hướng tăng; khi sự khác biệt giảm, nó chỉ ra xu hướng giảm. Đồng thời, chỉ số ATR được sử dụng để xác định chiều rộng. Nó nhập vào các vị trí khi xu hướng được xác nhận và chiều rộng tiếp tục mở rộng.
Chiến lược này chủ yếu dựa trên hai loại chỉ số: trung bình động Hull và ATR.
Trung bình di chuyển Hull là một chỉ số theo xu hướng được phát triển bởi nhà giao dịch tương lai người Mỹ Alan Hull. Tương tự như trung bình di chuyển, trung bình di chuyển Hull có độ nhạy cao hơn và có thể nắm bắt thay đổi giá và xu hướng nhanh hơn. Chiến lược đặt một tham số có thể điều chỉnh hullLength để kiểm soát thời gian của trung bình di chuyển Hull. Bằng cách tính toán sự khác biệt giữa Hull MA và các giai đoạn trước, nó xác định hướng xu hướng giá hiện tại.
ATR là viết tắt của Average True Range. Nó phản ánh mức biến động giá hàng ngày. Khi biến động tăng, ATR tăng; khi biến động giảm, ATR giảm. Chiến lược đặt các tham số như atrLength và atrSmoothing để kiểm soát tính toán ATR. Và ATR được vẽ trên biểu đồ như một tham chiếu cho các mục.
Cụ thể, chiến lược logic là:
Những lợi thế của chiến lược này:
Một số rủi ro của chiến lược này:
Giải pháp:
Vẫn còn nhiều chỗ để tối ưu hóa:
Chiến lược này tích hợp khả năng theo dõi xu hướng của Hull MA và khả năng đánh giá nhiệt của ATR. Nó đi vào vị trí khi xu hướng được xác nhận và biến động tăng để lọc ra một số tín hiệu không hợp lệ. Tăng cường hơn nữa có thể đạt được bằng cách tối ưu hóa tham số và quản lý rủi ro tốt hơn. Tóm lại, 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. Khi các tham số được điều chỉnh tốt, nó có thể mang lại kết quả tốt.
/*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")