
Die Strategie basiert auf dem Hull Moving Average (HMA), der auf Kreuzungssignalen basiert. Die HMA ist ein fortgeschrittener Moving Average-Indikator, der die Rückstände durch eine spezielle Kombination von gewichteten Moving Averages (WMA) reduziert, um ein schnelleres und friedlicheres Markttrendsignal zu liefern.
Der Kern der Strategie ist die Verwendung von HMA-Kreuzungen verschiedener Zyklen, um Wendepunkte für Markttrends zu erfassen. Der HMA-Berechnungsvorgang besteht aus drei Schritten: Zuerst berechnet man den halben Zyklus-WMA, dann den vollen Zyklus-WMA, und schließlich berechnet man einen Zyklus als Quadratwurzel des ursprünglichen Zyklus-WMA durch eine spezielle Kombination dieser beiden WMA.
Es handelt sich um eine quantitative Handelsstrategie, die auf HMA-Kreuzungen basiert und zeitnahere Handelssignale liefert, indem sie die Verzögerung des herkömmlichen Moving Averages reduziert. Die Strategie ist schlicht und einfach zu verstehen und zu implementieren, aber in der praktischen Anwendung muss auf die Anpassung an die Marktumgebung und das Risikomanagement geachtet werden. Durch kontinuierliche Optimierung und Verbesserung hat die Strategie das Potenzial, ein robustes Handelssystem zu werden.
/*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)