www.pudn.com > VWAP.zip > frmTestVWAP.cs


using System; 
using System.Drawing; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
using System.Data; 
 
 
	///  
	/// Summary description for TestVWAP. 
	///  
	///  
 
	public class frmTestVWAP : System.Windows.Forms.Form 
	{ 
 
		private string filename = ""; 
		private AxSTOCKCHARTXLib.AxStockChartX axStockChartX1; 
		private System.Windows.Forms.Panel pnlTop; 
		private System.Windows.Forms.Button btnZoomIn; 
		private System.Windows.Forms.Button btnZoomOut; 
		private System.Windows.Forms.Button btnRight; 
		private System.Windows.Forms.Button btnLeft; 
		private System.Windows.Forms.Label label1; 
		private System.Windows.Forms.TextBox txtLength; 
		private System.Windows.Forms.Button btnVWAP; 
		private System.Windows.Forms.Button btnBrowse; 
		private System.Windows.Forms.TextBox txtPath; 
		///  
		/// Required designer variable. 
		///  
		private System.ComponentModel.Container components = null; 
 
		public frmTestVWAP() 
		{ 
			// 
			// Required for Windows Form Designer support 
			// 
			InitializeComponent(); 
 
			// 
			// TODO: Add any constructor code after InitializeComponent call 
			// 
		} 
 
		///  
		/// Clean up any resources being used. 
		///  
		protected override void Dispose( bool disposing ) 
		{ 
			if( disposing ) 
			{ 
				if (components != null)  
				{ 
					components.Dispose(); 
				} 
			} 
			base.Dispose( disposing ); 
		} 
 
		#region Windows Form Designer generated code 
		///  
		/// Required method for Designer support - do not modify 
		/// the contents of this method with the code editor. 
		///  
		private void InitializeComponent() 
		{ 
			System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(frmTestVWAP)); 
			this.axStockChartX1 = new AxSTOCKCHARTXLib.AxStockChartX(); 
			this.pnlTop = new System.Windows.Forms.Panel(); 
			this.btnZoomIn = new System.Windows.Forms.Button(); 
			this.btnZoomOut = new System.Windows.Forms.Button(); 
			this.btnRight = new System.Windows.Forms.Button(); 
			this.btnLeft = new System.Windows.Forms.Button(); 
			this.label1 = new System.Windows.Forms.Label(); 
			this.txtLength = new System.Windows.Forms.TextBox(); 
			this.btnVWAP = new System.Windows.Forms.Button(); 
			this.btnBrowse = new System.Windows.Forms.Button(); 
			this.txtPath = new System.Windows.Forms.TextBox(); 
			((System.ComponentModel.ISupportInitialize)(this.axStockChartX1)).BeginInit(); 
			this.pnlTop.SuspendLayout(); 
			this.SuspendLayout(); 
			//  
			// axStockChartX1 
			//  
			this.axStockChartX1.Dock = System.Windows.Forms.DockStyle.Fill; 
			this.axStockChartX1.Enabled = true; 
			this.axStockChartX1.Location = new System.Drawing.Point(0, 80); 
			this.axStockChartX1.Name = "axStockChartX1"; 
			this.axStockChartX1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axStockChartX1.OcxState"))); 
			this.axStockChartX1.Size = new System.Drawing.Size(688, 406); 
			this.axStockChartX1.TabIndex = 0; 
			//  
			// pnlTop 
			//  
			this.pnlTop.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
			this.pnlTop.Controls.Add(this.btnZoomIn); 
			this.pnlTop.Controls.Add(this.btnZoomOut); 
			this.pnlTop.Controls.Add(this.btnRight); 
			this.pnlTop.Controls.Add(this.btnLeft); 
			this.pnlTop.Controls.Add(this.label1); 
			this.pnlTop.Controls.Add(this.txtLength); 
			this.pnlTop.Controls.Add(this.btnVWAP); 
			this.pnlTop.Controls.Add(this.btnBrowse); 
			this.pnlTop.Controls.Add(this.txtPath); 
			this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top; 
			this.pnlTop.ForeColor = System.Drawing.Color.Gainsboro; 
			this.pnlTop.Location = new System.Drawing.Point(0, 0); 
			this.pnlTop.Name = "pnlTop"; 
			this.pnlTop.Size = new System.Drawing.Size(688, 80); 
			this.pnlTop.TabIndex = 11; 
			//  
			// btnZoomIn 
			//  
			this.btnZoomIn.BackColor = System.Drawing.Color.WhiteSmoke; 
			this.btnZoomIn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 
			this.btnZoomIn.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); 
			this.btnZoomIn.ForeColor = System.Drawing.Color.DarkBlue; 
			this.btnZoomIn.Location = new System.Drawing.Point(112, 40); 
			this.btnZoomIn.Name = "btnZoomIn"; 
			this.btnZoomIn.Size = new System.Drawing.Size(32, 23); 
			this.btnZoomIn.TabIndex = 19; 
			this.btnZoomIn.Text = "+"; 
			this.btnZoomIn.Click += new System.EventHandler(this.btnZoomIn_Click); 
			//  
			// btnZoomOut 
			//  
			this.btnZoomOut.BackColor = System.Drawing.Color.WhiteSmoke; 
			this.btnZoomOut.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 
			this.btnZoomOut.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); 
			this.btnZoomOut.ForeColor = System.Drawing.Color.DarkBlue; 
			this.btnZoomOut.Location = new System.Drawing.Point(80, 40); 
			this.btnZoomOut.Name = "btnZoomOut"; 
			this.btnZoomOut.Size = new System.Drawing.Size(32, 23); 
			this.btnZoomOut.TabIndex = 18; 
			this.btnZoomOut.Text = "-"; 
			this.btnZoomOut.Click += new System.EventHandler(this.btnZoomOut_Click); 
			//  
			// btnRight 
			//  
			this.btnRight.BackColor = System.Drawing.Color.WhiteSmoke; 
			this.btnRight.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 
			this.btnRight.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); 
			this.btnRight.ForeColor = System.Drawing.Color.DarkBlue; 
			this.btnRight.Location = new System.Drawing.Point(40, 40); 
			this.btnRight.Name = "btnRight"; 
			this.btnRight.Size = new System.Drawing.Size(32, 23); 
			this.btnRight.TabIndex = 17; 
			this.btnRight.Text = ">"; 
			this.btnRight.Click += new System.EventHandler(this.btnRight_Click_1); 
			//  
			// btnLeft 
			//  
			this.btnLeft.BackColor = System.Drawing.Color.WhiteSmoke; 
			this.btnLeft.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 
			this.btnLeft.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); 
			this.btnLeft.ForeColor = System.Drawing.Color.DarkBlue; 
			this.btnLeft.Location = new System.Drawing.Point(8, 40); 
			this.btnLeft.Name = "btnLeft"; 
			this.btnLeft.Size = new System.Drawing.Size(32, 23); 
			this.btnLeft.TabIndex = 16; 
			this.btnLeft.Text = "<"; 
			this.btnLeft.Click += new System.EventHandler(this.btnLeft_Click_1); 
			//  
			// label1 
			//  
			this.label1.BackColor = System.Drawing.Color.Black; 
			this.label1.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); 
			this.label1.ForeColor = System.Drawing.Color.White; 
			this.label1.Location = new System.Drawing.Point(416, 8); 
			this.label1.Name = "label1"; 
			this.label1.Size = new System.Drawing.Size(40, 16); 
			this.label1.TabIndex = 15; 
			this.label1.Text = "Length"; 
			this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; 
			//  
			// txtLength 
			//  
			this.txtLength.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
			this.txtLength.ForeColor = System.Drawing.Color.DarkBlue; 
			this.txtLength.Location = new System.Drawing.Point(464, 8); 
			this.txtLength.Name = "txtLength"; 
			this.txtLength.Size = new System.Drawing.Size(56, 20); 
			this.txtLength.TabIndex = 13; 
			this.txtLength.Text = ""; 
			//  
			// btnVWAP 
			//  
			this.btnVWAP.BackColor = System.Drawing.Color.WhiteSmoke; 
			this.btnVWAP.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 
			this.btnVWAP.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); 
			this.btnVWAP.ForeColor = System.Drawing.Color.DarkBlue; 
			this.btnVWAP.Location = new System.Drawing.Point(528, 8); 
			this.btnVWAP.Name = "btnVWAP"; 
			this.btnVWAP.TabIndex = 14; 
			this.btnVWAP.Text = "VWAP"; 
			this.btnVWAP.Click += new System.EventHandler(this.btnVWAP_Click); 
			//  
			// btnBrowse 
			//  
			this.btnBrowse.BackColor = System.Drawing.Color.WhiteSmoke; 
			this.btnBrowse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 
			this.btnBrowse.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); 
			this.btnBrowse.ForeColor = System.Drawing.Color.DarkBlue; 
			this.btnBrowse.Location = new System.Drawing.Point(328, 8); 
			this.btnBrowse.Name = "btnBrowse"; 
			this.btnBrowse.TabIndex = 12; 
			this.btnBrowse.Text = "Browse..."; 
			this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click); 
			//  
			// txtPath 
			//  
			this.txtPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
			this.txtPath.ForeColor = System.Drawing.Color.DarkBlue; 
			this.txtPath.Location = new System.Drawing.Point(8, 8); 
			this.txtPath.Name = "txtPath"; 
			this.txtPath.Size = new System.Drawing.Size(312, 20); 
			this.txtPath.TabIndex = 11; 
			this.txtPath.Text = ""; 
			//  
			// frmTestVWAP 
			//  
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); 
			this.BackColor = System.Drawing.Color.Black; 
			this.ClientSize = new System.Drawing.Size(688, 486); 
			this.Controls.Add(this.axStockChartX1); 
			this.Controls.Add(this.pnlTop); 
			this.Name = "frmTestVWAP"; 
			this.Text = "TestVWAP"; 
			this.Load += new System.EventHandler(this.Form1_Load); 
			((System.ComponentModel.ISupportInitialize)(this.axStockChartX1)).EndInit(); 
			this.pnlTop.ResumeLayout(false); 
			this.ResumeLayout(false); 
 
		} 
		#endregion 
 
		///  
		/// The main entry point for the application. 
		///  
		[STAThread] 
		static void Main()  
		{ 
			Application.Run(new frmTestVWAP()); 
		} 
 
		private void Form1_Load(object sender, System.EventArgs e) 
		{ 
			// open filename 
			// run vwap and show chart 
			axStockChartX1.RightDrawingSpacePixels=40; 
			axStockChartX1.ScalePrecision = 4; 
			axStockChartX1.RealTimeXLabels=true; 
			int closePanel = this.axStockChartX1.AddChartPanel(); 
			this.axStockChartX1.AddSeries("EUR.Close",STOCKCHARTXLib.SeriesType.stLineChart,closePanel); 
			axStockChartX1.set_SeriesColor("EUR.Close",System.Drawing.ColorTranslator.ToWin32(System.Drawing.Color.Blue)); 
			this.axStockChartX1.AddSeries("EUR.VWAP",STOCKCHARTXLib.SeriesType.stLineChart,closePanel); 
			axStockChartX1.set_SeriesColor("EUR.VWAP",System.Drawing.ColorTranslator.ToWin32(System.Drawing.Color.Orange)); 
			int volPanel = this.axStockChartX1.AddChartPanel(); 
			this.axStockChartX1.AddSeries("EUR.Volume",STOCKCHARTXLib.SeriesType.stVolumeChart,volPanel); 
			axStockChartX1.set_SeriesColor("EUR.Volume",System.Drawing.ColorTranslator.ToWin32(System.Drawing.Color.Red)); 
 
		 
		} 
 
		private void btnBrowse_Click(object sender, System.EventArgs e) 
		{ 
			 
			System.Windows.Forms.OpenFileDialog oDialog = new OpenFileDialog(); 
			if (oDialog.ShowDialog() == DialogResult.OK) 
			{ 
				filename = oDialog.FileName; 
				this.txtPath.Text = filename; 
			} 
		} 
 
		private void btnVWAP_Click(object sender, System.EventArgs e) 
		{ 
			if (this.txtPath.Text == "") 
			{ 
				MessageBox.Show("Path not specified."); 
				return; 
			} 
 
			Fabrefactum.TimeSeries tSeries = new Fabrefactum.TimeSeries(); 
 
			using (CSVReader csv = new CSVReader(@txtPath.Text))  
			{ 
				string[] fields; 
				while ((fields = csv.GetCSVLine()) != null)  
				{ 
					object[] fieldArray = new object[fields.Length]; 
					 
					fieldArray[0] = DateTime.Parse(fields[0] + " " + fields[1]); 
					for (int i = 2; i < fields.Length; i++) 
					{ 
						fieldArray[i-1] = Convert.ToDouble(fields[i]); 
					} 
 
					if (fieldArray.Length > 1) 
					{ 
						tSeries.Add(DateTime.Parse(fieldArray[0].ToString()),fieldArray); 
					} 
				} 
			} 
 
			// Calculate VWAP 
			int length  = 10; 
			if (this.txtLength.Text != "") 
			{ 
				length = Convert.ToInt32(txtLength.Text); 
			} 
 
			Fabrefactum.VWAP.Calculate(tSeries,length,4,6,5); 
			axStockChartX1.ClearValues("EUR.Close"); 
			axStockChartX1.ClearValues("EUR.VWAP"); 
			axStockChartX1.ClearValues("EUR.Volume"); 
 
			// Add our points 
			for (int i = 0; i < tSeries.Count; i++) 
			{ 
				object[] series = (object[])tSeries[i]; 
				if ((double)series[6] != double.NaN) 
				{ 
					DateTime date = tSeries.GetDateTime(i); 
					double jDate = axStockChartX1.ToJulianDate(date.Year,date.Month,date.Day,date.Hour,date.Minute,date.Second); 
					axStockChartX1.AppendValue("EUR.Close",jDate,(double)series[4]); 
					axStockChartX1.AppendValue("EUR.VWAP",jDate,(double)series[6]); 
					axStockChartX1.AppendValue("EUR.Volume",jDate,(double)series[5]); 
				} 
			} 
 
			axStockChartX1.CtlUpdate(); 
		 
		} 
 
		private void btnLeft_Click_1(object sender, System.EventArgs e) 
		{ 
			axStockChartX1.ScrollLeft(100); 
		} 
 
		private void btnRight_Click_1(object sender, System.EventArgs e) 
		{ 
			axStockChartX1.ScrollRight(100); 
		} 
 
		private void btnZoomOut_Click(object sender, System.EventArgs e) 
		{ 
			axStockChartX1.ZoomOut(100); 
		} 
 
		private void btnZoomIn_Click(object sender, System.EventArgs e) 
		{ 
			axStockChartX1.ZoomIn(100); 
			axStockChartX1.ScrollRight(100); 
		} 
	}