Wealth-Lab Wiki

API ChartStyles Community Components Community Indicators IndexDefinitions Knowledge Base Misc Optimizers Pending Deletion PosSizers Providers Standard Indicators TASC Traders Tips TASCIndicators Tutorial Videos Visualizers
RSS

Navigation


Quick Search
»
Advanced Search »


Syntax

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.

Description

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.

Interpretation

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.

Calculation

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

where,
  • 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.

Example

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.

Used under license from FMR Corp. Copyright 2008 FMR Corp. All rights reserved.


ScrewTurn Wiki. Some of the icons created by FamFamFam.