> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ninjatrader.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ninjatrader.com/_mcp/server.

# Moving Average - Variable (VMA)

## Description

A Variable Moving Average is an exponential moving average that automatically adjusts its smoothing percentage based on market volatility. Giving more weight to the current data increases sensitivity thus making it a better signal indicator for short and long term markets.

## Syntax

`VMA(int period, int volatilityPeriod)`

`VMA(ISeries\<double\> input, int period, int volatilityPeriod)`

**Returns default value**

`VMA(int period, int volatilityPeriod)[int barsAgo]`

`VMA(ISeries\<double\> input, int period, int volatilityPeriod)[int barsAgo]`

## Return Value

**double;** Accessing this method via an index value `[int barsAgo]` returns the indicator value of the referenced bar.

## Parameters

| Parameter        | Description                                                                                                                                                             |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| input            | Indicator source data ([Series\<T>](/developer/desktop-sdk/references/common/iseriest/seriest))                                                                         |
| period           | Number of bars used in the calculation                                                                                                                                  |
| volatilityPeriod | The number of bars used to calculate the [CMO](/developer/desktop-sdk/references/common/system-indicator-methods/chande-momentum-oscillator-cmo) based volatility index |

## Examples

```csharp
// OnBarUpdate method of a strategy
protected override void OnBarUpdate()
{
   // Print out the VMA value of lows 3 bars ago for fun
   double value = VMA(Low, 9, 9)[3];
   Print("The value is " + value.ToString());
 
   // Go long if price closes above the current VMA value
   if (Close[0] > VMA(9, 9)[0])
       EnterLong();
}
```

## Source Code

You can view this indicator method source code by selecting the menu New > NinjaScript Editor > Indicators within the NinjaTrader Control Center window.