本策略基于赫尔移动平均线(Hull Moving Average, HMA)的交叉信号进行交易。通过计算快速和慢速两条HMA线,在它们发生交叉时产生交易信号。HMA是一种先进的移动平均线指标,它通过加权移动平均(WMA)的特殊组合来减少滞后性,提供更快速和平滑的市场趋势信号。
策略的核心是利用不同周期的HMA交叉来捕捉市场趋势的转换点。HMA的计算过程包括三个步骤:首先计算半周期的WMA,然后计算完整周期的WMA,最后通过这两个WMA的特殊组合再次计算一个周期为原周期平方根的WMA。当快速HMA(默认9周期)向上穿越慢速HMA(默认16周期)时,产生做多信号;当快速HMA向下穿越慢速HMA时,产生做空信号。
这是一个基于HMA交叉的量化交易策略,通过减少传统移动平均线的滞后性来提供更及时的交易信号。策略设计简洁,易于理解和实现,但在实际应用中需要注意市场环境的适配性和风险管理。通过持续优化和完善,该策略有潜力成为一个稳健的交易系统。
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Hull Moving Average Crossover", overlay=true)
fastLength = input.int(9, "Fast HMA Length", minval=1)
slowLength = input.int(16, "Slow HMA Length", minval=1)
hma(src, length) =>
wma1 = ta.wma(src, length / 2)
wma2 = ta.wma(src, length)
ta.wma(2 * wma1 - wma2, math.floor(math.sqrt(length)))
fastHMA = hma(close, fastLength)
slowHMA = hma(close, slowLength)
plot(fastHMA, color=color.blue, title="Fast HMA")
plot(slowHMA, color=color.red, title="Slow HMA")
longCondition = ta.crossover(fastHMA, slowHMA)
shortCondition = ta.crossunder(fastHMA, slowHMA)
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
plotshape(longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)