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

Understanding the ta.vwma() Function in Pine Script

Photo of author
Published on

In this article, we’ll explore the ta.vwma() function in Pine Script, which is a powerful tool for financial analysis within the TradingView platform. The ta.vwma() function calculates the Volume-Weighted Moving Average (VWMA) of a given data series for a specified number of bars. This technical indicator is particularly useful for understanding market trends by combining price movements with volume.

What is ta.vwma()?

The ta.vwma() function computes the VWMA, an average that takes into account not only the price of an asset but also its trading volume. This approach gives more weight to periods with higher volume, making the VWMA a more comprehensive indicator than simple moving averages.


The syntax for ta.vwma() is as follows:

ta.vwma(source, length) → series float


  • source (series int/float): The series of values to be processed. Typically, this is the closing price of an asset.
  • length (series int): The number of bars to consider for calculating the average.

Example Code

Let’s look at an example that demonstrates how to use the ta.vwma() function:

indicator("Custom VWMA")
plot(ta.vwma(close, 15))

// Alternative implementation using SMA, less efficient
customVWMA(x, y) =>
    ta.sma(x * volume, y) / ta.sma(volume, y)
plot(customVWMA(close, 15))

Line-by-Line Explanation

  1. indicator("Custom VWMA"): Declares a new indicator with the name “Custom VWMA”.
  2. plot(ta.vwma(close, 15)): Plots the VWMA of the closing prices over the past 15 bars on the chart.
  3. customVWMA(x, y) =>: Defines a custom function customVWMA that takes two arguments: x (the data series, usually close prices) and y (the length of the moving average).
  4. ta.sma(x * volume, y) / ta.sma(volume, y): Implements the VWMA calculation manually using SMAs. It calculates the SMA of the product of the price series and volume, then divides it by the SMA of the volume, mimicking the VWMA calculation.
  5. plot(customVWMA(close, 15)): Plots the VWMA calculated by the custom function for the same period for comparison.

Key Features and Takeaways

  • The ta.vwma() function is specifically designed to calculate the volume-weighted moving average, offering a straightforward way to incorporate both price and volume into your analysis.
  • Compared to a simple moving average, the VWMA can provide more relevant insights during periods of significant volume changes.
  • Implementing VWMA using the ta.sma() function is possible but less efficient than using ta.vwma().
  • This function gracefully handles na values in the source series, ensuring that missing data doesn’t distort the calculated average.

Understanding and utilizing the ta.vwma() function can significantly enhance your trading strategy by providing a more nuanced view of market trends. Whether you’re analyzing stocks, commodities, or cryptocurrencies, incorporating volume into your moving averages can yield more actionable insights.

Leave a Comment