Tài nguyên đang được tải lên... tải...

Hull Moving Average Trend Theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-09-19 16:40:00
Tags:

Tổng quan

Chiến lược này dựa trên chỉ số Hull Moving Average được phát minh bởi Alan Hull, thuộc về các chiến lược theo xu hướng.

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

  1. Tính toán ngắn hạn và dài hạn Hull MA. Thời gian ngắn cho hướng giao dịch cụ thể, thời gian dài cho xu hướng tổng thể.

  2. Khi ngắn Hull MAs thời gian vượt qua, xác định xu hướng đảo ngược. lọc với xu hướng thời gian dài.

  3. Thêm giá vượt qua điều kiện MA Hull để đảm bảo vượt qua thành công.

  4. Thêm bộ lọc tỷ lệ thay đổi giá để tránh việc xâm nhập đột phá không mong muốn.

  5. Đặt dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro.

Phân tích lợi thế

So với các đường trung bình di chuyển đơn giản, lợi thế của chiến lược này bao gồm:

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

  2. Cấu trúc MA Hull kép có thể xác định xu hướng trên cả khung thời gian dài và ngắn.

  3. Các bộ lọc đột phá giá và tỷ lệ thay đổi giúp tránh đột phá sai.

  4. Động lực dừng lỗ và lấy lợi nhuận khóa trong lợi nhuận và kiểm soát rủi ro.

Phân tích rủi ro

Rủi ro của chiến lược này:

  1. Cài đặt tham số không chính xác có thể bỏ lỡ xu hướng biến động giá.

  2. Việc đánh giá xu hướng tổng thể sai có thể gây ra các giao dịch ngược xu hướng.

  3. Đặt stop loss quá rộng có thể dẫn đến tổn thất lớn.

  4. Giao dịch quá thường xuyên làm tăng chi phí giao dịch và rủi ro trượt.

Hướng dẫn tối ưu hóa

Nó có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa thời gian MA Hull để cân bằng độ nhạy và trơn tru.

  2. Tối ưu hóa các thông số nhập và xuất để tìm ra các giá trị tối ưu.

  3. Kiểm tra độ bền của tham số trên các dụng cụ khác nhau để cải thiện khả năng thích nghi.

  4. Bao gồm khối lượng để tránh rủi ro phân kỳ.

  5. Thêm điều kiện để cải thiện sự ổn định.

Tóm lại

Nhìn chung, chiến lược này tận dụng khả năng đáp ứng của Hull MA để theo dõi các xu hướng kịp thời và có lợi nhuận mạnh dưới sự kiểm soát rủi ro.


/*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)

Thêm nữa