Chiến lược theo xu hướng dựa trên đường trung bình động Hull và phạm vi thực


Ngày tạo: 2024-01-15 15:26:08 sửa đổi lần cuối: 2024-01-15 15:26:08
sao chép: 0 Số nhấp chuột: 775
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng dựa trên đường trung bình động Hull và phạm vi thực

Tổng quan

Ý 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.

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

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:

  1. Tính trung bình Hull currentHullMA của chu kỳ hiện tại và trung bình Hull previousHullMA của chu kỳ trước
  2. Tính khác biệt của cả hai hullDiff = currentHullMA - previousHullMA
  3. Khi hullDiff > 0, đánh giá là xu hướng đa đầu; khi hullDiff < 0, đánh giá là xu hướng không đầu
  4. Trong khi đó, tính ATR của một chu kỳ (trong atLength thiết lập) như là một chỉ số của chiều rộng của xu hướng
  5. Khi được đánh giá là xu hướng đa đầu, và ATR lớn hơn giá và giá lớn hơn giá trước chu kỳ atrLength, hãy làm nhiều; khi được đánh giá là xu hướng đầu trống, và ATR nhỏ hơn giá và giá nhỏ hơn giá trước chu kỳ atrLength, hãy làm trống
  6. Đánh giá tín hiệu cân bằng bằng hullDiff

Phân tích lợi thế chiến lược

Chiến lược này có những ưu điểm sau:

  1. Kết hợp với sự phán đoán xu hướng và chỉ số biến động, bạn có thể chọn tham gia khi xu hướng giá rõ ràng và biến động tăng lên, tránh bị mắc kẹt trong thị trường biến động.
  2. Hull Average Line có khả năng phản ứng nhanh hơn với sự thay đổi của giá, có thể nhanh chóng đánh giá xu hướng mới.
  3. ATR có thể phản ánh sự biến động và nhiệt độ của thị trường, cung cấp cơ sở cho lựa chọn thời điểm nhập cảnh.
  4. Có nhiều tham số có thể điều chỉnh, có thể đạt được sự kết hợp tham số tốt nhất bằng cách tối ưu hóa.

Phân tích rủi ro

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

  1. Hull Average Line và ATR đều không tránh được hoàn toàn các vấn đề phá vỡ giả, và vẫn có thể bị lắp đặt.
  2. Thiết lập tham số không đúng có thể dẫn đến giao dịch thường xuyên hoặc không đủ nhạy cảm, ảnh hưởng đến hiệu quả của chiến lược.
  3. Không có khả năng đối phó hiệu quả với những tình huống khắc nghiệt, chẳng hạn như đột phá hoặc sụp đổ.

Giải pháp tương ứng:

  1. Cảnh sát đã tìm thấy một số người bị thương trong các vụ tấn công.
  2. Thử nghiệm và tối ưu hóa các tham số để các chỉ số phù hợp hơn với các môi trường thị trường khác nhau.
  3. Các chiến lược này được sử dụng để ngăn chặn các cuộc tấn công của các lực lượng quân sự trong các khu vực khác nhau.

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

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:

  1. Kiểm tra các tham số chu kỳ trung bình khác nhau của Hull để tìm các thiết lập chu kỳ phù hợp nhất với môi trường thị trường hiện tại.
  2. Kiểm tra các kết hợp tham số khác nhau của chu kỳ ATR để tìm chu kỳ có thể nắm bắt được nhiệt độ thị trường tốt nhất.
  3. Thử các loại ATR khác nhau (RMA, SMA, EMA, v.v.) để xem loại nào có hiệu quả nhất.
  4. Tối ưu hóa các điều kiện mở vị trí, chẳng hạn như kết hợp các điều kiện của Reaction và ATR.
  5. Tối ưu hóa phương thức dừng lỗ, nới lỏng mức dừng lỗ thích hợp, tránh bị đặt.

Tóm tắt

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.

Mã nguồn chiến lược
/*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")