www.pudn.com > VWAP.zip > VWAP.cs
using System;
namespace Fabrefactum
{
///
/// Volume Weighted Average Price
///
public class VWAP
{
private static TimeSeries _timeSeries;
private static int _length = 1;
private VWAP()
{
}
///
/// Calculate VWAP for a timeseries
///
///
///
public static TimeSeries Calculate(TimeSeries timeSeries, int length, int calcColumn, int outputColumn, int volumeColumn)
{
_length = length;
_timeSeries = timeSeries;
for (int i = 0; i < timeSeries.Count; i++)
{
((object[])timeSeries[i])[outputColumn] = Value(i, calcColumn, volumeColumn);
}
return timeSeries;
}
///
/// Calculate VWAP for each value in the timeseries
///
///
///
///
private static double Value(int index, int calcColumn, int volumeColumn)
{
if (index < _length - 1)
{
return double.NaN;
}
double d1 = 0.0;
double d2 = 0.0;
for (int i = index; i >= index - _length + 1; i--)
{
object[] series = (object[])_timeSeries[i];
d1 += (double)series[calcColumn] * (double)series[volumeColumn];
d2 += (double)series[volumeColumn];
}
d1 /= d2;
return d1;
}
}
}