private void button1_Click(object sender, EventArgs e) { MarketGuess day = GetMarketGuess(searchBox.Text, days); PopulateChart(day); chart1.Refresh(); }
public MainCandleStick() { InitializeComponent(); Console.WriteLine("Wait..."); Console.WriteLine("Leave empty for random stock or enter a ticker and date 'TICKER YYYY-MM-DD'"); Console.Write("Search:"); string search = Console.ReadLine(); MarketGuess day = GetMarketGuess(search, days); chart1.MouseMove += chart1_MouseMove; tooltip.AutomaticDelay = 10; PopulateChart(day); var firstGroup = days.GroupBy(x => x.FirstVolume.VolumeClass); foreach (var iter in firstGroup) { var secondGroup = iter.GroupBy(x => x.SecondVolume.VolumeClass); foreach (var iter2 in secondGroup) { VolumeShortLong v = new VolumeShortLong(iter2.OrderBy(x => x.FirstVolume.Volume).ThenBy(x => x.SecondVolume.Volume).ToList()); v.Text = $"{iter.Key}-{iter2.Key}"; v.Show(); } } }
public Form1() { InitializeComponent(); testLog.AutoFlush = true; day = GetMarketGuess("", days); chart1.MouseMove += chart1_MouseMove; tooltip.AutomaticDelay = 10; }
private void newButton_Click(object sender, EventArgs e) { count = 1; buyPoint = null; profit = 0; rakeInButton.Enabled = false; goLongButton.Enabled = true; shortButton.Enabled = true; noTouchButton.Enabled = true; day = GetMarketGuess("", days); PopulateChart(day); }
static MarketGuess GetMarketGuess(string search, List <MarketGuess> days) { Random rand = new Random(); MarketGuess day; if (search == "") { var shortList = days.Where(x => x.MarketDay.DataPoints.Count > 20 && x.FirstVolume.VolumeClass != VolumeClass.veryLow && x.SecondVolume.VolumeClass != VolumeClass.veryLow).ToList(); int index = rand.Next(0, shortList.Count); day = shortList[index]; } else { string[] splitSearch = search.Split(' '); day = days.FirstOrDefault( x => x.MarketDay.Ticker == splitSearch[0].ToUpper() && x.MarketDay.DateTime == DateTime.Parse(splitSearch[1])); } return(day); }
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(); }