该策略运用零时滞后 EMA 和 Hull EMA 的组合来实现趋势跟踪。零时滞后 EMA 可消除普通 EMA 的滞后,Hull EMA 则可平滑价格曲线。两者的组合可以更准确地捕捉趋势走势,实现低风险的趋势跟踪交易。
首先计算出零时滞后 EMA:
EMA1 = ema(close, Period)
EMA2 = ema(EMA1, Period)
Difference = EMA1 - EMA2
ZeroLagEMA = EMA1 + Difference
其中,ZeroLagEMA 是零时滞后 EMA。它消除了普通 EMA 的滞后问题。
然后计算出 Hull EMA 平滑后的曲线:
n2ma = 2*wma(ZeroLagEMA, round(S_period/2))
nma = wma(ZeroLagEMA, S_period)
n1 = wma(n2ma - nma, sqn)
最后计算当前 Hull EMA(n1)与上一周期 Hull EMA(n2)的大小关系,判断趋势方向,制定交易策略。
该策略最大的优势在于能够准确捕捉趋势方向。原因有二:
零时滞后 EMA 消除了普通 EMA 的滞后问题,能够更快速地捕捉价格变化。
Hull EMA 对价格进行了双平滑,可过滤掉部分噪音,Capture趋势更加清晰。
相比单独使用 EMA 或 Hull EMA,两者的组合能够发挥各自的优势,使策略更准确、更可靠。
该策略主要存在以下风险:
Period 和 S_period 参数设置不当,可能导致策略对市场反应不敏感,错过交易时机。
震荡行情中,EMA 和 Hull EMA 可能产生较多交叉信号,需要警惕假突破。
无法有效处理价格隔夜大幅跳空的情况。
因此,需要仔细测试参数设置,谨慎看待指标信号,防范价格跳空的风险。
该策略可以从以下方面进行优化:
测试不同市场不同周期下的参数优化组合,使策略对各种行情都有较好的适应性。
结合其他指标过滤假突破信号,例如KDJ,MACD等,提高策略的稳定性。
增加止损策略,以控制单笔损失。
优化入场 timing,进一步提升策略的胜率。例如结合趋势方向,避免逆势开仓。
该策略运用零时滞后 Hull EMA 的组合,可准确、灵敏地捕捉市场趋势,以低风险的方式进行趋势跟踪交易。通过参数优化、指标过滤、止损等手段可进一步提高策略稳定性。总体来说,该策略简单实用,适合趋势货币对及股指的交易。
/*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)