KVO Indicator Documentation
Syntax
public KVO(Bars bars, int period1, period2, string description)
public static KVOSeries(Bars bars, int period1, period2)
Parameter Description
bars | A Bars object |
period1 | The length of the faster EMA of the volume force |
period2 | The length of the slower EMA of the volume force |
Description
KVO (developed by Stephen Klinger) is used to determine long-term trends of money flow while remaining sensitive enough to short-term fluctuations. This oscilator compares the volume flowing in and out of a security to price movement.
The oscillator is used together with the Trigger line which is a 13-day exponential moving average of the KVO. It's also possible to build a histogram as the difference between the Klinger Volume Oscillator and its trigger line, and the resulting interpretation will be similar to that of the Moving Average Convergence Divergence (
MACD).
Interpretation
- KVO can be used to confirm the trend or to detect possible trend shifts. For example, a buy signal is generated when the KVO crosses above its trigger line from below after a big drop below the zero level, and a sell signal is generated when the KVO crosses below its trigger line after reaching unusual high levels above zero.
- A divergence between the close price and the KVO can also generate trading signals, identifying when price and volume are not confirming the direction of the move. A bullish signal is detected when KBO is heading upward while the price of the security continues to fall.
Example
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using Community.Indicators;
namespace WealthLab.Strategies
{
public class KlingerDemo : WealthScript
{
protected override void Execute()
{
int FastX = 34;
int SlowX = 55;
int TrigLen = 13;
KVO kvo = KVO.Series( Bars,FastX,SlowX );
EMA Trigger = EMA.Series( kvo, TrigLen, EMACalculation.Modern ); Trigger.Description = "Trigger";
ChartPane kvoPane = CreatePane( 30, true, false );
PlotSeries( kvoPane, kvo, Color.Red, LineStyle.Solid, 1 );
PlotSeries( kvoPane, Trigger, Color.Blue, LineStyle.Solid, 1 );
}
}
}