Chiến lược theo xu hướng dựa trên đường trung bình động Hull


Ngày tạo: 2023-09-19 16:40:00 sửa đổi lần cuối: 2023-09-19 16:40:00
sao chép: 1 Số nhấp chuột: 638
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này dựa trên các chỉ số trung bình di chuyển của Hull do Alan Hull đưa ra, thuộc chiến lược theo dõi xu hướng. Chỉ số này có thể làm giảm hiệu ứng trễ của trung bình di chuyển một cách hiệu quả và đáp ứng tốt hơn với sự thay đổi giá. Chiến lược sử dụng trung bình di chuyển của Hull để đánh giá xu hướng và gửi tín hiệu giao dịch kết hợp với các điều kiện lọc bổ sung.

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

  1. Tính trung bình di chuyển của Hull cho hai nhóm thời gian ngắn và dài. Thời gian ngắn xác định hướng giao dịch cụ thể, thời gian dài xác định hướng xu hướng lớn.

  2. Khi chu kỳ ngắn Hull MA trên đi qua đi qua, đánh giá xu hướng xảy ra đảo ngược.

  3. Tăng giá để phá vỡ Hull MA, đảm bảo phá vỡ thành công.

  4. Thêm điều kiện tỷ lệ biến đổi giá để tránh đột phá không mong muốn.

  5. Thiết lập các điều kiện dừng và dừng, kiểm soát rủi ro.

Phân tích lợi thế

So với trung bình di chuyển thông thường, chiến lược này có những ưu điểm sau:

  1. Hull MA phản ứng nhanh hơn với sự thay đổi giá và có thể bắt kịp sự thay đổi xu hướng.

  2. Cấu trúc Hull MA đôi có thể xác định xu hướng của hai chiều thời gian lớn và nhỏ.

  3. Các điều kiện phá vỡ giá và tỷ lệ thay đổi có thể lọc hiệu quả các phá vỡ giả.

  4. Động thái Stop Loss Stop Lock có thể khóa lợi nhuận và kiểm soát rủi ro.

Phân tích rủi ro

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

  1. Thiết lập tham số không đúng có thể bỏ lỡ biến động xu hướng giá.

  2. Những sai lầm trong việc đánh giá xu hướng lớn có thể dẫn đến giao dịch ngược.

  3. Cài đặt Stop Loss quá rộng có thể dẫn đến tổn thất lớn.

  4. Lưu ý rằng các giao dịch thường xuyên sẽ làm tăng chi phí giao dịch và rủi ro trượt.

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

Có thể tối ưu hóa bằng cách:

  1. Tối ưu hóa chu kỳ Hull MA, cân bằng độ nhạy và độ mịn.

  2. Tối ưu hóa các tham số của Entry và Exit để tìm ra giá trị tối ưu.

  3. Kiểm tra sức mạnh của các tham số khác nhau, cải thiện khả năng thích ứng của chiến lược.

  4. Chỉ số kết hợp có thể tránh được rủi ro do lệch.

  5. Thêm điều kiện, tăng sự ổn định của chiến lược.

Tóm tắt

Nhìn chung, chiến lược này sử dụng khả năng phản ứng nhanh chóng của Hull MA để theo dõi xu hướng kịp thời, có khả năng lợi nhuận mạnh mẽ với giả định kiểm soát rủi ro. Tuy nhiên, cần chú ý đến việc tối ưu hóa các tham số và phòng ngừa một số rủi ro hệ thống khó tránh.

Mã nguồn chiến lược
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 22:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//SeaSide420
strategy("SS420FX", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
q=input(title="HullMA Short",defval=14)
z=input(title="HullMA Long",defval=14)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100000.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(q/2))
nma=wma(close,q)
diff=n2ma-nma
sqn=round(sqrt(q))
n2ma1=2*wma(close[1],round(q/2))
nma1=wma(close[1], q)
diff1=n2ma1-nma1
sqn1=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
z2ma=2*wma(close[11],round(z/2))
zma=wma(close[11],z)
ziff=n2ma-nma
zqn=round(sqrt(z))
z2ma1=2*wma(close[12],round(z/2))
zma1=wma(close[12], z)
ziff1=n2ma1-nma1
zqn1=round(sqrt(z))
z1=wma(diff,sqn)
z2=wma(diff1,sqn)
z1e=z1>z2?green:black
z2e=z1>z2?black:red
z3e=z1>z2?green:red
n1e=plot(z1, title="HMA1", color=z1e, linewidth=2, offset=2)
n2e=plot(z2, title="HMA2", color=z2e, linewidth=2, offset=2)
fill(n1e, n2e, color=z3e, transp=80)
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and z1>z2 and strategy.opentrades<ot and confidence>dt and close>n1
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and z1<z2 and strategy.opentrades<ot and confidence<dt and close<n1 
if (shortCondition)
    strategy.entry("Short",strategy.short)