
Esta estrategia es una estrategia de trading oscilante que combina Hull MA, canales de precios, señales EMA y regresión lineal. La estrategia utiliza Hull MA para determinar la dirección de la tendencia del mercado, canales de precios y regresión lineal para determinar las zonas de fondo, señales EMA para determinar el momento de entrada en el mercado para capturar tendencias de línea corta.
La estrategia se compone principalmente de los siguientes indicadores:
Logía de entrada:
Entrada múltiple: Hull MA hacia arriba y con precios más altos que los de la vía, retorno lineal hacia arriba a través de la EMA de corto plazo Entrada en blanco: Hull MA hacia abajo y precio por debajo de la vía baja, retorno lineal hacia abajo a través de la EMA corta
La lógica de salida:
Salida múltiple: precio por debajo de la vía descendente y recorrido de retorno lineal hacia abajo Salida en blanco: precio más alto que la subida y recorrido de regreso lineal hacia arriba
La estrategia tiene las siguientes ventajas:
La estrategia también tiene ciertos riesgos:
Se puede optimizar a partir de los siguientes puntos:
Esta estrategia combina varios indicadores, como el Hull MA, el canal de precios, el EMA y la regresión lineal, para formar una estrategia de negociación de oscilación de línea media y corta más completa. En comparación con un solo indicador, la estrategia puede mejorar considerablemente la precisión de juicio y capturar ganancias en la tendencia y la reversión.
/*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