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; 
		} 
 
	} 
}