void PopulateChart(MarketGuess day) { chart1.ChartAreas["VolumeArea"].AlignWithChartArea = "PriceArea"; chart1.ChartAreas["VolumeArea"].AlignmentOrientation = AreaAlignmentOrientations.Vertical; chart1.ChartAreas["VolumeArea"].AlignmentStyle = AreaAlignmentStyles.All; chart1.Titles["TitleStockDetails"].Text = day.ToString(); chart1.Series["Hloc5Min"].ChartType = SeriesChartType.Candlestick; chart1.Series["Hloc5Min"].Points.Clear(); chart1.ChartAreas["PriceArea"].AxisY.Minimum = day.MarketDay.Low * 0.999; chart1.ChartAreas["PriceArea"].AxisY.Maximum = day.MarketDay.High * 1.001; chart1.ChartAreas["PriceArea"].AxisY2.Minimum = (day.MarketDay.Low / day.BuyPrice - 1); chart1.ChartAreas["PriceArea"].AxisY2.Maximum = (day.MarketDay.High / day.BuyPrice - 1); chart1.ChartAreas["PriceArea"].AxisX.Minimum = day.ToOA(9, 30); chart1.ChartAreas["PriceArea"].AxisX.Maximum = day.ToOA(16, 10); chart1.ChartAreas["VolumeArea"].AxisX.Minimum = day.ToOA(9, 30); chart1.ChartAreas["VolumeArea"].AxisX.Maximum = day.ToOA(16, 10); foreach (Series series in chart1.Series) { series.Points.Clear(); } Console.WriteLine(day.MarketDay.ToStringNice()); chart1.Series["LocalHL"].Points.Add(new DataPoint(day.ToOA(9, 30), new [] { day.LocalHigh, day.LocalLow })); chart1.Series["LocalHL"].Points.Add(new DataPoint(day.ToOA(10, 30), new [] { day.LocalHigh, day.LocalLow })); chart1.Series["HighBound"].Points.Add(new DataPoint(day.ToOA(9, 30), day.HighBound)); chart1.Series["HighBound"].Points.Add(new DataPoint(day.ToOA(10, 30), day.HighBound)); chart1.Series["LowBound"].Points.Add(new DataPoint(day.ToOA(9, 30), day.LowBound)); chart1.Series["LowBound"].Points.Add(new DataPoint(day.ToOA(10, 30), day.LowBound)); chart1.Series["BuyPrice"].Points.Add(new DataPoint(day.ToOA(9, 30), day.BuyPrice)); chart1.Series["BuyPrice"].Points.Add(new DataPoint(day.ToOA(10, 30), day.BuyPrice)); chart1.Series["GapLine"].Points.Add(new DataPoint(day.ToOA(9, 30), day.MarketDay.Open / day.MarketDay.Gap)); chart1.Series["GapLine"].Points.Add(new DataPoint(day.ToOA(16, 10), day.MarketDay.Open / day.MarketDay.Gap)); chart1.Series["ProfitMargin"].Points.Add(new DataPoint(day.ToOA(10, 30), new[] { day.BuyPrice *(1 - MarketGuess.profit), day.BuyPrice * (1 + MarketGuess.profit) })); chart1.Series["ProfitMargin"].Points.Add(new DataPoint(day.ToOA(16, 10), new[] { day.BuyPrice *(1 - MarketGuess.profit), day.BuyPrice * (1 + MarketGuess.profit) })); foreach (DataPoint dataPoint in chart1.Series["ProfitMargin"].Points) { dataPoint.Color = Color.FromArgb(40, dataPoint.Color); } foreach (DataPoint dataPoint in chart1.Series["LocalHL"].Points) { dataPoint.Color = Color.FromArgb(40, dataPoint.Color); } foreach (MarketDataPoint marketDataPoint in day.LongPoints) { chart1.Series["LongPoints"].Points.Add(new DataPoint(marketDataPoint.DateTime.ToOADate(), marketDataPoint.High)); } foreach (MarketDataPoint marketDataPoint in day.ShortPoints) { chart1.Series["ShortPoints"].Points.Add(new DataPoint(marketDataPoint.DateTime.ToOADate(), marketDataPoint.Low)); } foreach (MarketDataPoint marketDataPoint in day.MarketDay.DataPoints) { chart1.Series["Hloc5Min"].Points.Add( new DataPoint( marketDataPoint.DateTime.ToOADate(), new[] { marketDataPoint.High, marketDataPoint.Low, marketDataPoint.Open, marketDataPoint.Close })); chart1.Series["Volume5Min"].Points.Add(new DataPoint(marketDataPoint.DateTime.ToOADate(), (double)marketDataPoint.Volume / 5)); } }
void PopulateChart(MarketGuess day) { foreach (Series series in chart1.Series) { series.Points.Clear(); } //Console.WriteLine(day.MarketDay.ToStringNice()); //chart1.Series["LocalHL"].Points.Add(new DataPoint(day.ToOA(9, 30), new []{day.LocalHigh, day.LocalLow})); //chart1.Series["LocalHL"].Points.Add(new DataPoint(day.ToOA(10, 30), new []{day.LocalHigh, day.LocalLow})); chart1.Series["HighBound"].Points.Add(new DataPoint(day.ToOA(9, 30), lh * 0.99)); chart1.Series["HighBound"].Points.Add(new DataPoint(day.ToOA(10, 30), lh * 0.99)); chart1.Series["LowBound"].Points.Add(new DataPoint(day.ToOA(9, 30), ll * 1.01)); chart1.Series["LowBound"].Points.Add(new DataPoint(day.ToOA(10, 30), ll * 1.01)); if (buyPoint != null) { chart1.Series["BuyPrice"].Points.Add(new DataPoint(buyPoint.DateTime.ToOADate(), buyPoint.Close)); chart1.Series["BuyPrice"].Points.Add(new DataPoint(day.ToOA(16, 30), buyPoint.Close)); } if (sellPoint != null) { chart1.Series["SellPrice"].Points.Add(new DataPoint(sellPoint.DateTime.ToOADate(), sellPoint.Close)); chart1.Series["SellPrice"].Points.Add(new DataPoint(day.ToOA(16, 30), sellPoint.Close)); } chart1.Series["GapLine"].Points.Add(new DataPoint(day.ToOA(9, 30), day.MarketDay.Open / day.MarketDay.Gap)); chart1.Series["GapLine"].Points.Add(new DataPoint(day.ToOA(16, 10), day.MarketDay.Open / day.MarketDay.Gap)); //chart1.Series["ProfitMargin"].Points.Add(new DataPoint(day.ToOA(10, 30), new[] { day.BuyPrice * (1 - MarketGuess.profit), day.BuyPrice * (1 + MarketGuess.profit) })); //chart1.Series["ProfitMargin"].Points.Add(new DataPoint(day.ToOA(16, 10), new[] { day.BuyPrice * (1 - MarketGuess.profit), day.BuyPrice * (1 + MarketGuess.profit) })); volAvg = 0; ll = 999999; lh = 0; for (int i = 0; i < count; i++) { //chart1.Series["ProfitMargin"].Points[i].Color = Color.FromArgb(40, chart1.Series["ProfitMargin"].Points[i].Color); //chart1.Series["LongPoints"].Points.Add(new DataPoint(day.LongPoints[i].DateTime.ToOADate(), day.LongPoints[i].High)); //chart1.Series["ShortPoints"].Points.Add(new DataPoint(day.ShortPoints[i].DateTime.ToOADate(), day.ShortPoints[i].Low)); chart1.Series["Hloc5Min"].Points.Add( new DataPoint( day.MarketDay.DataPoints[i].DateTime.ToOADate(), new[] { day.MarketDay.DataPoints[i].High, day.MarketDay.DataPoints[i].Low, day.MarketDay.DataPoints[i].Open, day.MarketDay.DataPoints[i].Close })); chart1.Series["Volume5Min"].Points.Add(new DataPoint(day.MarketDay.DataPoints[i].DateTime.ToOADate(), (double)day.MarketDay.DataPoints[i].Volume / 5)); volAvg += (double)day.MarketDay.DataPoints[i].Volume / 5; ll = (day.MarketDay.DataPoints[i].Low < ll) ? day.MarketDay.DataPoints[i].Low : ll; lh = (day.MarketDay.DataPoints[i].High > lh) ? day.MarketDay.DataPoints[i].High : lh; } volAvg /= count; if (buyPoint != null) { if (goingLong) { profit = 1 - (buyPoint.Close / day.MarketDay.DataPoints[count - 1].Close); } else { profit = (buyPoint.Close / day.MarketDay.DataPoints[count - 1].Close) - 1; } } chart1.ChartAreas["VolumeArea"].AlignWithChartArea = "PriceArea"; chart1.ChartAreas["VolumeArea"].AlignmentOrientation = AreaAlignmentOrientations.Vertical; chart1.ChartAreas["VolumeArea"].AlignmentStyle = AreaAlignmentStyles.All; chart1.Titles["TitleStockDetails"].Text = $"Time:{day.MarketDay.DataPoints[count-1].DateTime.ToString("t")}\n" + $"Current:{day.MarketDay.DataPoints[count-1].Close}\n" + $"VolAvg:{volAvg}\n" + $"Profit:{profit}"; chart1.Series["Hloc5Min"].ChartType = SeriesChartType.Candlestick; //chart1.Series["Hloc5Min"].Points.Clear(); chart1.ChartAreas["PriceArea"].AxisY.Minimum = ll; chart1.ChartAreas["PriceArea"].AxisY.Maximum = lh; chart1.ChartAreas["PriceArea"].AxisY2.Minimum = ll / lh; chart1.ChartAreas["PriceArea"].AxisY2.Maximum = 1; chart1.ChartAreas["PriceArea"].AxisX.Minimum = day.ToOA(9, 30); chart1.ChartAreas["PriceArea"].AxisX.Maximum = day.ToOA(16, 10); chart1.ChartAreas["VolumeArea"].AxisX.Minimum = day.ToOA(9, 30); chart1.ChartAreas["VolumeArea"].AxisX.Maximum = day.ToOA(16, 10); chart1.Refresh(); }