Hull MA Channel và chiến lược giao dịch chuyển động hồi quy tuyến tính

Tác giả:ChaoZhang, Ngày: 2023-12-01 16:47:01
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch swing kết hợp Hull MA, kênh giá, tín hiệu EMA và hồi quy tuyến tính. Nó sử dụng Hull MA để xác định hướng xu hướng thị trường, kênh giá và hồi quy tuyến tính để xác định khu vực đáy, tín hiệu EMA đến thời gian nhập thị trường, để nắm bắt xu hướng trung hạn.

Chiến lược logic

Chiến lược bao gồm các chỉ số chính sau:

  1. Hull MA
    • Thời gian điển hình của Hull MA là 337, đại diện cho hướng xu hướng trung bình đến dài hạn
    • Khi 2 lần WMA 18 giai đoạn là trên WMA 337 giai đoạn, nó là một thị trường tăng, nếu không nó là một thị trường gấu
  2. Kênh giá
    • Biểu đồ kênh giá EMA cao và EMA thấp, đại diện cho khu vực hỗ trợ và kháng cự
  3. Tín hiệu EMA
    • Thời gian điển hình là 89, đại diện cho xu hướng ngắn hạn và tín hiệu nhập cảnh
  4. Phục hồi tuyến tính
    • Dòng nhanh 6 thời gian cho đáy và breakout
    • Đường chậm 89 giai đoạn cho xu hướng trung bình đến dài hạn

Logic đầu vào:

Long Entry: Hull MA hướng lên và giá trên dải trên, hồi quy tuyến tính vượt lên tín hiệu EMA Short Entry: Hull MA hướng xuống và giá dưới dải dưới, hồi quy tuyến tính vượt qua tín hiệu EMA

Logic thoát:

Long Exit: Giá dưới dải dưới và vượt qua hồi quy tuyến tính Short Exit: Giá trên dải trên và vượt qua hồi quy tuyến tính lên

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Độ chính xác cao hơn với nhiều chỉ số
    • Hull MA cho xu hướng chính, kênh hỗ trợ/kháng cự, EMA cho bước vào
  2. Swing trading để nắm bắt xu hướng trung hạn
    • Chiến lược chủ yếu là đảo ngược để nắm bắt mỗi chu kỳ trung hạn
  3. Rủi ro có thể kiểm soát được và rút vốn nhỏ hơn
    • Tín hiệu chỉ được tạo ra ở khu vực có khả năng cao, tránh truy đuổi cao giết thấp

Phân tích rủi ro

Ngoài ra còn có một số rủi ro:

  1. Không gian tối ưu hóa hạn chế
    • Các thông số chính như thời gian EMA được cố định, với không gian tối ưu hóa nhỏ
  2. Có thể thua trong thị trường giới hạn phạm vi
    • Stop loss có thể được kích hoạt trong phạm vi bên
  3. Cần kiến thức phân tích kỹ thuật.
    • Chiến lược logic cần hành động giá và kiến thức chỉ số, không phù hợp với tất cả mọi người

Cải tiến:

  1. Điều chỉnh chiến lược dừng lỗ, ví dụ như dừng lỗ sau
  2. Tối ưu hóa logic nhập và xuất
  3. Thêm các chỉ số lọc khác như MACD

Tóm lại

Chiến lược này kết hợp Hull MA, kênh giá, EMA và hồi quy tuyến tính cho một chiến lược giao dịch dao động trung hạn hoàn chỉnh. So với các chiến lược chỉ số duy nhất, nó cải thiện độ chính xác đáng kể trong việc bắt xu hướng và đảo ngược. Nhưng vẫn có những rủi ro, đòi hỏi kiến thức phân tích kỹ thuật.


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Swing Hull/SonicR/EMA/Linear Regression Strategy", overlay=true)
//Hull MA
n=input(title="HullMA Period",defval=377)
//
n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))
//
n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))
//
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
condDown = n2 >= n1
condUp = condDown != true
col =condUp ? lime : condDown ? red : yellow
plot(n1,title="Hull MA", color=col,linewidth=3)
// SonicR + Line reg
EMA = input(defval=89, title="EMA Signal")
HiLoLen     = input(34, minval=2,title="High Low channel Length")
lr     = input(89, minval=2,title="Linear Regression Length")
pacC        = ema(close,HiLoLen)
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
DODGERBLUE = #1E90FFFF
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90)
H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90)
C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80)
//Moving Average//
signalMA =ema(close,EMA)
plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line)
linereg = linreg(close, lr, 0)
lineregf = linreg(close, HiLoLen, 0)
cline=linereg>linereg[1]?green:red
cline2= lineregf>lineregf[1]?green:red
plot(linereg, color = cline, title = "Linear Regression Curve Slow", style = line, linewidth = 1)
//plot(lineregf, color = cline2, title = "Linear Regression Curve Fast", style = line, linewidth = 1)
longCondition = n1>n2
shortCondition = longCondition != true
closeLong =  lineregf-pacH>(pacH-pacL)*2 and close<lineregf and linereg>signalMA
closeShort = pacL-lineregf>(pacH-pacL)*2 and close>lineregf and linereg<signalMA
if shortCondition    
    if (close[0] < signalMA[0] and close[1] > pacL[1] and linereg>pacL and close<n1 and pacL<n1) //cross entry
        strategy.entry("SHORT", strategy.short, comment="Short")
strategy.close("SHORT", when=closeShort) //output logic
if longCondition // swing condition          
    if (close[0] > signalMA[0] and close[1] < pacH[1] and linereg<pacH and close>n1 and pacH>n1) //cross entry
        strategy.entry("LONG", strategy.long, comment="Long")
strategy.close("LONG", when=closeLong) //output logic


Thêm nữa