Example #1
0
        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));
                }
            }
        }
Example #2
0
        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;
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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;
              }
        }
Example #5
0
        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));
            }
              }
        }