La estrategia utiliza una combinación de EMA de retraso de hora cero y EMA de casco para lograr el seguimiento de la tendencia. El EMA de retraso de hora cero elimina el retraso del EMA normal, mientras que el EMA de casco suaviza la curva de precios. La combinación de ambos permite capturar con mayor precisión el movimiento de la tendencia y lograr operaciones de seguimiento de tendencia de bajo riesgo.
Primero se calcula el EMA con retraso de cero horas:
EMA1 = ema(close, Period) EMA2 = ema(EMA1, Period) Difference = EMA1 - EMA2 ZeroLagEMA = EMA1 + Difference
Entre ellos, ZeroLagEMA es el EMA con retraso de tiempo cero. Elimina el retraso del EMA ordinario.
Luego se calcula la curva de la EMA de Hull después de la suavización:
n2ma = 2*wma(ZeroLagEMA, round(S_period/2)) nma = wma(ZeroLagEMA, S_period) n1 = wma(n2ma - nma, sqn)
Finalmente, se calcula la relación entre la magnitud del EMA de Hull actual (n1) y la del EMA de Hull del ciclo anterior (n2), se determina la dirección de la tendencia y se elabora una estrategia de negociación.
La mayor ventaja de esta estrategia es su capacidad para capturar con precisión la dirección de las tendencias.
La EMA con retraso de hora cero elimina el retraso de la EMA normal y permite capturar los cambios de precio más rápidamente.
El Hull EMA ha realizado un doble suavizado de los precios para filtrar parte del ruido, y la tendencia de Capture es más clara.
En comparación con el uso de EMA o Hull EMA por separado, la combinación de los dos puede ejercer sus respectivas ventajas para que la estrategia sea más precisa y confiable.
El principal riesgo de esta estrategia es:
La configuración incorrecta de los parámetros Period y S_period puede hacer que la estrategia no sea sensible a la reacción del mercado y se pierda el momento de negociar.
En situaciones de temblor, el EMA y el Hull EMA pueden generar más señales de cruce, lo que requiere una falsa brecha de alerta.
El precio de la gasolina ha aumentado de forma espectacular en los últimos años, pero no ha sido suficiente para hacer frente a la crisis.
Por lo tanto, es necesario probar cuidadosamente la configuración de los parámetros y observar cuidadosamente las señales de los indicadores para evitar el riesgo de saltos de precios.
La estrategia puede ser optimizada en los siguientes aspectos:
Prueba de combinaciones de optimización de parámetros en diferentes mercados y en diferentes períodos de tiempo para que las estrategias se adapten mejor a diferentes situaciones.
En combinación con otros indicadores de filtración de señales falsas de ruptura, como KDJ, MACD, etc., mejora la estabilidad de la estrategia.
Aumentar las estrategias de stop loss para controlar las pérdidas individuales.
Optimización de la entrada en el timing, para mejorar aún más la tasa de éxito de la estrategia. Por ejemplo, en combinación con la dirección de la tendencia, evitar la apertura de posiciones en contra.
La estrategia utiliza una combinación de Hull EMAs con retraso de cero horas para capturar con precisión y agilidad las tendencias del mercado y realizar operaciones de seguimiento de tendencias de manera de bajo riesgo. La estabilidad de la estrategia se puede mejorar aún más a través de la optimización de parámetros, filtración de indicadores y parada de pérdidas. En general, la estrategia es sencilla y práctica y es adecuada para el comercio de pares de divisas y índices de acciones en tendencia.
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// Zero Lag EMA combined with Hull moving average for smoothing purposes.
// author: email: [email protected]
strategy("Ujanja", overlay=true)
Period = input(title="Period",defval=30, minval=1)
S_period=input(title="Smoother Period",defval=176)
EMA1= ema(close,Period)
EMA2= ema(EMA1,Period)
Difference= EMA1 - EMA2
ZeroLagEMA= EMA1 + Difference
n2ma=2*wma(ZeroLagEMA,round(S_period/2))
nma=wma(ZeroLagEMA,S_period)
diff=n2ma-nma
sqn=round(sqrt(S_period))
n2ma1=2*wma(ZeroLagEMA[1],round(S_period/2))
nma1=wma(ZeroLagEMA[1],S_period)
diff1=n2ma1-nma1
sqn1=round(sqrt(S_period))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?green:red
ma=plot(n1,color=c)
longCondition = n1>n2
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = longCondition != true
if (shortCondition)
strategy.entry("Short", strategy.short)