private void timer_Tick(object sender, EventArgs e) { if (m_Data == null) { return; } if (chkSlide.Checked) { var sample = CandleSample.GenerateRandom(1, DT, 1000, 10, 20, 15, 120.0f); m_Data.Add(sample[0]); DT = DT.AddSeconds(tbInterval.Text.AsInt(1)); chart.NotifySeriesChange(); return; } foreach (var sample in m_Data.Data) { sample.OpenPrice += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); sample.ClosePrice += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); sample.HighPrice += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); sample.LowPrice += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); } chart.NotifySeriesChange(); }
private void tmrUpdate_Tick(object sender, EventArgs e) { if (!chkRealtime.Checked) { return; } var series = chart.Series as CandleTimeSeries; if (series == null) { return; } if (m_OriginalDataFromFile == null) { return; } var sample = m_OriginalDataFromFile.Skip(timerX).FirstOrDefault(); if (sample == null) { timerX = 0; sample = m_OriginalDataFromFile.Skip(timerX).FirstOrDefault(); } else { timerX++; } if (sample == null) { return; } var last = series.DataReveresed.First(); var newSample = new CandleSample(last.TimeStamp.AddSeconds(m_SecResolution)) { OpenPrice = sample.OpenPrice, ClosePrice = sample.ClosePrice, HighPrice = sample.HighPrice, LowPrice = sample.LowPrice, BuyVolume = sample.BuyVolume, SellVolume = sample.SellVolume, TimeSpanMs = sample.TimeSpanMs }; series.Add(newSample); updateLevels(series); chart.NotifySeriesChange(); }
protected internal CandleBuySellElement(CandleBuySellView view, PlotPane host, CandleSample sample, int x, float minScale, float maxScale) : base(host) { m_View = view; m_Sample = sample; m_ScaleMin = minScale; m_ScaleMax = maxScale; computeCoords(); var h = Math.Max(m_Lay_BuyHeight, m_Lay_SellHeight); this.Region = new Rectangle(x, (int)(host.Height / host.Zoom) - h, CandleView.BAR_WIDTH, h); }
protected internal CandleElement(PlotPane host, CandleSample candle, int x, float minScale, float maxScale) : base(host) { m_Candle = candle; // m_Style = new Style(null, getBaseStyle()); m_ScaleMin = minScale; m_ScaleMax = maxScale; m_Lay_X = x; m_Lay_W = CandleView.BAR_WIDTH; computeCoords(); this.Region = new Rectangle(m_Lay_X, m_Lay_Y, m_Lay_W, m_Lay_H); }
protected internal CandleElement(PlotPane host, CandleSample candle, int x, float minScale, float maxScale, bool bw) : base(host) { Candle = candle; // m_Style = new Style(null, getBaseStyle()); m_ScaleMin = minScale; m_ScaleMax = maxScale; m_Lay_X = x; m_Lay_W = CandleView.BAR_WIDTH - 1; computeCoords(); this.Region = new Rectangle(m_Lay_X, m_Lay_Y, m_Lay_W, m_Lay_H); m_BW = bw; }
private void btnConnect_Click(object sender, EventArgs e) { m_Data = new CandleTimeSeries("My data", 0); // m_Data.MaxSamples = 10; var sd = DateTime.Now.AddSeconds(-500); var samples = CandleSample.GenerateRandom(300, sd, 1000, 10, 20, 8, 120.0f); samples.ForEach(s => m_Data.Add(s)); m_Data.Views.Register(new CandleView("Candles", 0)); m_Data.Views.Register( new CandleMidLineView("MidLineHiLo", 1) { MidLineType = MidLineType.HighLow, LineStyle = new LineStyle { Color = Color.FromArgb(200, 255, 0, 0), Width = 2 } }); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl1", 2) { MidLineType = MidLineType.OpenClose, LineStyle = new LineStyle { Color = Color.FromArgb(200, 50, 0, 200), Width = 1.5f, DashStyle = System.Drawing.Drawing2D.DashStyle.Dot } }); m_Data.Views.Register(new CandleView("Candles2", 0, "MLPane") { BlackWhite = true }); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl2", 1, "MLPane") { MidLineType = MidLineType.OpenClose, LineStyle = new LineStyle { Color = Color.FromArgb(200, 255, 180, 0), Width = 3f } }); // m_Data.Views.Register( new CandleView("Avg1", 0, "Another Pane0")); // m_Data.Views.Register( new CandleView("Avg2", 0, "Another Pane1")); //m_Data.Views.Register( new CandleView("Avg3", 0, "Another Pane2")); //m_Data.Views.Register( new CandleView("Avg4", 0, "Another Pane3")); //m_Data.Views.Register( new CandleView("Avg5", 0, "Another Pane4")); //m_Data.Views.Register( new CandleView("Avg6", 0, "Another Pane5")); chart.Series = m_Data; }
protected override Elements.Element MakeSampleElement(TimeSeriesChart chart, PlotPane pane, CandleSample sample, int x, float minScale, float maxScale) { var elm = new CandleElement(pane, sample, x, minScale, maxScale, BlackWhite); if (ShowBalloons) { elm.MouseClick += elm_MouseClick; } return(elm); }
protected override Elements.Element MakeSampleElement(TimeSeriesChart chart, PlotPane pane, CandleSample sample, int x, float minScale, float maxScale) { return(null); }
protected override Elements.Element MakeSampleElement(TimeSeriesChart chart, PlotPane pane, CandleSample sample, int x, float minScale, float maxScale) { return(new CandleBuySellElement(this, pane, sample, x, minScale, maxScale)); }