
Strategi ini adalah strategi perdagangan berayun yang menggabungkan Hull MA, saluran harga, isyarat EMA dan pengembalian linear. Strategi ini menggunakan Hull MA untuk menentukan arah trend pasaran, saluran harga dan pengembalian linear untuk menentukan kawasan bawah, isyarat EMA untuk menentukan masa masuk ke pasaran untuk menangkap trend garis pendek tengah.
Strategi ini terdiri daripada beberapa bahagian utama:
Logik input:
Pendaftaran berganda: Hull MA ke atas dan harga lebih tinggi dari atas landasan, pengembalian linear ke atas melalui EMA jangka pendek Kemasukan kosong: Hull MA ke bawah dan harga lebih rendah daripada landasan bawah, pengembalian linear ke bawah melalui EMA jangka pendek
Logik keluar:
Perlawanan berbilang arah: harga lebih rendah daripada landasan bawah dan melintasi kemerosotan linear ke bawah Permulaan kosong: harga lebih tinggi daripada naik dan melintasi kemerosotan linear ke atas
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai risiko:
Ini boleh dioptimumkan dengan:
Strategi ini menggabungkan beberapa indikator seperti Hull MA, saluran harga, EMA dan pengembalian linear untuk membentuk strategi perdagangan yang lebih lengkap. Strategi ini dapat meningkatkan ketepatan penghakiman dan menangkap keuntungan dalam trend dan pembalikan berbanding dengan satu indikator.
/*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