private void btnQuotes_Click(object sender, EventArgs e) { using (var fs = new LocalFileSystem()) { var sdb = new SecDBFileReader(fs, new FileSystemSessionConnectParams(), tbSecDBFile.Text); Text = "Exchange: {0}, Origin time: {1}, {2}".Args(sdb.SystemHeader.Exchange, sdb.SystemHeader.Date + sdb.SystemHeader.OriginLocalTimeOffset, sdb.SystemHeader.OriginLocalTimeName); var sw = System.Diagnostics.Stopwatch.StartNew(); var cnt = sdb.GetAllStreamData().Count(s => s is SecDBFileReader.SecondSample); var el = sw.ElapsedMilliseconds; MessageBox.Show("{0} samples in {1} msec at {2}/sec".Args(cnt, el, cnt / (el / 1000d))); try { System.IO.File.WriteAllText(@"c:\Users\Anton\Desktop\SEC_DBDUMP.json", sdb.GetAllStreamData().Take(tbHowMany.Text.AsInt()).ToJSON(JSONWritingOptions.PrettyPrint)); } catch (Exception err) { MessageBox.Show("{0}\n------------\n{1}".Args(err.ToMessageWithType(), err.StackTrace)); } } }
private void loadData() { if (m_SecDBFile == null) { chart.Series = null; return; } var series = new CandleTimeSeries("Candles", 0); m_OriginalDataFromFile = m_SecDBFile.GetAllStreamData() .SynthesizeCandles(m_SecResolution) .ToArray(); m_OriginalDataFromFile.ForEach(s => series.Add(s)); series.Views.Register( new CandleView("Candles", 1) { ShowYLevels = true, ShowBalloons = true }); series.Views.Register(new CandleBuySellView("Volume", 2) { Visible = chkVolumes.Checked, Kind = getVolumeKind() }); series.Views.Register( new CandleMidLineView("MidLine", 3) { MidLineType = MidLineType.HighLow, LineStyle = new LineStyle { Color = Color.FromArgb(200, 255, 0, 0), Width = 2 }, Visible = chkMidLines.Checked }); series.YLevels.Register( new TimeSeries.YLevel("FIRST_PRICE", 1) { Visible = chkMidLevels.Checked, HLineStyle = new LineStyle { Color = Color.FromArgb(255, 20, 10), DashStyle = System.Drawing.Drawing2D.DashStyle.Dash } }); series.YLevels.Register( new TimeSeries.YLevel("MID_PRICE", 2) { Visible = chkMidLevels.Checked, HLineStyle = new LineStyle { Color = Color.FromArgb(0, 180, 80), DashStyle = System.Drawing.Drawing2D.DashStyle.Dot } }); series.YLevels.Register( new TimeSeries.YLevel("LAST_PRICE", 3) { Value = series.DataReveresed.First().ClosePrice, HLineStyle = new LineStyle { Color = Color.FromArgb(120, 40, 255), DashStyle = System.Drawing.Drawing2D.DashStyle.Dash } }); updateLevels(series); chart.Series = series; }
private void btnSynthCandles_Click(object sender, EventArgs e) { using (var fs = new LocalFileSystem()) { var sdb = new SecDBFileReader(fs, new FileSystemSessionConnectParams(), tbSecDBFile.Text); //var tradedata = sdb.GetAllStreamData() // .Where( s => s is SecDBFileReader.TradeSample) // .Cast<SecDBFileReader.TradeSample>() // .Select( t => new CandleSample(t.TimeStamp) // { // OpenPrice = t.Price, // ClosePrice = t.Price, // HighPrice = t.Price, // LowPrice = t.Price // } // ); var data = sdb.GetAllStreamData().Where(s => s is SecDBFileReader.TradeSample).SynthesizeCandles(tbSecPeriod.Text.AsUInt(), (cs, qs, i) => {}, (cs, ts, i) => // "Beautifier function" { if (i == 0) { cs.OpenPrice = ts.Price; } cs.HighPrice = Math.Max(cs.HighPrice, ts.Price); cs.LowPrice = cs.LowPrice != 0f ? Math.Min(cs.LowPrice, ts.Price) : ts.Price; cs.ClosePrice = ts.Price; if (ts.IsQty) { if (ts.Side == SecDBFileReader.TradeSample.SideType.Buy) { cs.BuyVolume += ts.Qty; } else { cs.SellVolume += ts.Qty; } } } ); m_Data = new CandleTimeSeries("Candles", 0); m_Data.Views.Register( new CandleView("Candle View", 1) { ShowYLevels = true, ShowBalloons = true }); //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 CandleBuySellView("BuySell", 2) { }); data.ForEach(s => m_Data.Add(s)); m_Data.YLevels.Register(new TimeSeries.YLevel("Lo", 0) { Value = m_Data.Data.Min(cs => cs.ClosePrice), AffectsScale = true, HLineStyle = new LineStyle { Color = Color.Red, Width = 2 } }); m_Data.YLevels.Register(new TimeSeries.YLevel("Hi", 0) { Value = m_Data.Data.Max(cs => cs.ClosePrice), AffectsScale = true, HLineStyle = new LineStyle { Color = Color.Blue, Width = 2 } }); chart.Series = m_Data; } }
private void btnSynthCandles_Click(object sender, EventArgs e) { using(var fs = new LocalFileSystem()) { var sdb = new SecDBFileReader(fs, new FileSystemSessionConnectParams(), tbSecDBFile.Text); //var tradedata = sdb.GetAllStreamData() // .Where( s => s is SecDBFileReader.TradeSample) // .Cast<SecDBFileReader.TradeSample>() // .Select( t => new CandleSample(t.TimeStamp) // { // OpenPrice = t.Price, // ClosePrice = t.Price, // HighPrice = t.Price, // LowPrice = t.Price // } // ); var data = sdb.GetAllStreamData().Where(s => s is SecDBFileReader.TradeSample).SynthesizeCandles(tbSecPeriod.Text.AsUInt(), (cs, qs, i) => {}, (cs, ts, i) => // "Beautifier function" { if (i==0) cs.OpenPrice = ts.Price; cs.HighPrice = Math.Max(cs.HighPrice, ts.Price); cs.LowPrice = cs.LowPrice!=0f ? Math.Min( cs.LowPrice , ts.Price) : ts.Price; cs.ClosePrice = ts.Price; if (ts.IsQty) { if (ts.Side==SecDBFileReader.TradeSample.SideType.Buy) cs.BuyVolume += ts.Qty; else cs.SellVolume += ts.Qty; } } ); m_Data = new CandleTimeSeries("Candles", 0); m_Data.Views.Register( new CandleView("Candle View", 1) { ShowYLevels = true, ShowBalloons = true }); //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 CandleBuySellView("BuySell", 2){} ); data.ForEach( s => m_Data.Add( s )); m_Data.YLevels.Register( new TimeSeries.YLevel("Lo", 0){Value = m_Data.Data.Min(cs=>cs.ClosePrice), AffectsScale = true, HLineStyle = new LineStyle{Color=Color.Red, Width =2}}); m_Data.YLevels.Register( new TimeSeries.YLevel("Hi", 0){Value = m_Data.Data.Max(cs=>cs.ClosePrice), AffectsScale = true, HLineStyle = new LineStyle{Color=Color.Blue, Width =2}}); chart.Series = m_Data; } }
private void btnQuotes_Click(object sender, EventArgs e) { using(var fs = new LocalFileSystem()) { var sdb = new SecDBFileReader(fs, new FileSystemSessionConnectParams(), tbSecDBFile.Text); Text = "Exchange: {0}, Origin time: {1}, {2}".Args(sdb.SystemHeader.Exchange, sdb.SystemHeader.Date+sdb.SystemHeader.OriginLocalTimeOffset, sdb.SystemHeader.OriginLocalTimeName); var sw = System.Diagnostics.Stopwatch.StartNew(); var cnt = sdb.GetAllStreamData().Count( s => s is SecDBFileReader.SecondSample); var el = sw.ElapsedMilliseconds; MessageBox.Show("{0} samples in {1} msec at {2}/sec".Args(cnt, el, cnt / (el /1000d))); try { System.IO.File.WriteAllText(@"c:\Users\Anton\Desktop\SEC_DBDUMP.json", sdb.GetAllStreamData().Take(tbHowMany.Text.AsInt()).ToJSON( JSONWritingOptions.PrettyPrint) ); } catch(Exception err) { MessageBox.Show("{0}\n------------\n{1}".Args(err.ToMessageWithType(), err.StackTrace)); } } }