Đâ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 bao gồm các chỉ số chính sau:
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
Chiến lược có những lợi thế sau:
Ngoài ra còn có một số rủi ro:
Cải tiến:
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