Home » Technical Analysis Functions » Understanding the ta.hma() Function in Pine Script

Understanding the ta.hma() Function in Pine Script

Photo of author
Published on

The Hull Moving Average (HMA) is a highly efficient and smooth moving average designed to reduce lag and increase responsiveness. In Pine Script, the ta.hma() function is a powerful tool for traders and analysts looking to incorporate this moving average into their trading strategies. This article will delve into the HMA function in Pine Script, providing a comprehensive guide on its syntax, usage, and application in financial analysis.


The ta.hma() function is utilized to calculate the Hull Moving Average of a given data series over a specified number of bars. The syntax for this function is as follows:

ta.hma(source, length) → series float


  • source (series int/float): This argument represents the series of values that the HMA will process. Typically, this would be a price series such as close, open, high, or low.
  • length (simple int): This defines the number of bars over which the HMA is calculated. The choice of length impacts the sensitivity and smoothness of the moving average.


Let’s consider an example to illustrate the implementation of the HMA function in Pine Script.

indicator("Custom Hull Moving Average")
priceSource = input(defval=close, title="Price Source")
periodLength = input(defval=9, title="Period Length")
customHma = ta.hma(priceSource, periodLength)
plot(customHma, title="Custom HMA", color=#674EA7)

In this example, we define a custom indicator titled “Custom Hull Moving Average”. We use the input() function to allow users to select the price source and the period length for the HMA calculation. The ta.hma() function is then called with these inputs to compute the Hull Moving Average, which is subsequently plotted on the chart with a specified color.


  1. Indicator Declaration: indicator("Custom Hull Moving Average") declares a new indicator with the specified title.
  2. Input Selection: priceSource = input(defval=close, title="Price Source") allows users to choose the price source for the HMA calculation, with the default set to the close price of the bars.
  3. Period Length Input: periodLength = input(defval=9, title="Period Length") lets users specify the period length for the HMA, defaulting to 9 bars.
  4. HMA Calculation: customHma = ta.hma(priceSource, periodLength) calculates the Hull Moving Average using the selected price source and period length.
  5. Plotting: plot(customHma, title="Custom HMA", color=#674EA7) plots the calculated HMA on the chart with a specified title and color.

Key Features and Takeaways

  • Flexibility: The ta.hma() function allows for a high degree of customization, enabling traders to experiment with various lengths and sources to best suit their strategy.
  • Efficiency: HMA provides a smoother and more responsive moving average, which can be especially useful in identifying trends in volatile markets.
  • Simplicity: Despite its sophisticated calculation, implementing HMA in Pine Script is straightforward, making it accessible even to those new to coding.
  • Application: HMA can be used as a standalone indicator or in conjunction with other indicators to enhance trading strategies, providing signals for potential entry and exit points.

In conclusion, the ta.hma() function in Pine Script is an invaluable tool for financial analysts and traders. Its ability to reduce lag and increase responsiveness makes it a preferred choice for smoothing price data and identifying market trends with greater accuracy.

Leave a Comment