Log in to see Cloud of Tags

Wealth-Lab Wiki


public EMV(Bars source, int period, string description)
public static EMV Series(Bars source, int period)

Parameter Description

source Symbol's Bars object
period *Note! Up to Version 5.6, inclusive, EMV's period parameter was not used.


Developed Richard W. Arms, Jr., the Ease of Movement (EMV) indicator shows the relationship between volume and price change. As with Equivolume charting, EMV shows how much volume is required to move prices.


Larger positive values occur when prices are moving upward on light volume, whereas larger negative values are seen when prices move down on light volume. If prices are not moving, or if heavy volume is required to move prices, then the indicator will also be near zero.

In the classic interpretation, an EMV buy signal occurs when the indicator crosses above zero, and vice-versa for a sell signal. For smaller periods, EMV may be smoothed with a 14-period EMA, for example.


MidPoint = (High + Low)/2 - (Highn - Lown)/2
BoxRatio = (Volume / 1e6 ) / (High - Low)
EMV = MidPoint / BoxRatio

  • n = period
  • High and Low are the high and low over the indicator's period, and, Volume is the cumulative volume over the period
  • 1e6 is a scaling factor

See example for script derivation.


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;

namespace WealthLab.Strategies { public class MyStrategy : WealthScript { StrategyParameter period;

public MyStrategy() { period = CreateParameter("EMV Period", 1, 1, 20, 1); }

protected override void Execute() {

int per = period.ValueInt; if (per < 1) per = 1; DataSeries av = (Highest.Series(Bars.High, per) + Lowest.Series(Bars.Low, per)) / 2d; DataSeries midPoint = av - (av >> per); DataSeries boxRatio = (Sum.Series(Volume, per) /1.0e6) / (Highest.Series(Bars.High, per) - Lowest.Series(Bars.Low, per));

DataSeries emv = new DataSeries(Bars, "EMV(" + per + ")"); for(int bar = per; bar < Bars.Count; bar++) { if (boxRatio[bar] == 0) { emv[bar] = emv[bar-1]; // use the value from the previous bar } else { emv[bar] = midPoint[bar] / boxRatio[bar]; } } ChartPane cp = CreatePane(40, true, true); PlotSeries(cp, emv, Color.Black, LineStyle.Solid, 1); } } }

Important Disclaimer: The information provided by Wealth-Lab is strictly for informational purposes and is not to be construed as advice or solicitation to buy or sell any security.  The owner of Wealth-Lab.com assumes no liability resulting from the use of the material contained herein for investment purposes. By using this web site, you agree to the terms of this disclaimer and our Terms of Use.

ScrewTurn Wiki. Some of the icons created by FamFamFam.