public TraderBotResultsPlotViewModel(PlotHelper drawer)
        {
            Drawer             = drawer;
            this.PlotViewModel = new PlotModel {
                Title = Drawer.Title
            };


            CreateAxes();
            Candles = new CandleStickSeries();
            Candles.TrackerFormatString = "{0}\n{1}: {2}\nHigh: {3:0.########}\nLow: {4:0.########}\nOpen: {5:0.########}\nClose: {6:0.########}";

            Volumes = new VolumeSeries()
            {
                PositiveHollow = false,
                VolumeStyle    = VolumeStyle.Stacked,
                YAxisKey       = Volume_Yaxis.Key,
            };



            PlotViewModel.KeyDown += PlotViewModel_KeyDown;
            timer = new System.Timers.Timer()
            {
                Interval  = 100,
                AutoReset = true,
            };
            timer.Elapsed += UpdateOnTimerTick;
            timer.Start();
        }
示例#2
0
        public IEnumerable <AuthorsGridViewModel> GetAllAuthors(Id volumeId)
        {
            VolumeSeries seriesForVolume = m_SeriesService.GetVolumeSeriesByVolumeId(volumeId);

            IEnumerable <AuthorWithType> seriesAuthors = (seriesForVolume != null)
                ? m_AuthorService.GetSeriesAuthors(seriesForVolume.SeriesId)
                : new List <AuthorWithType>();

            IEnumerable <AuthorWithType> volumeAuthors = m_AuthorService.GetVolumeAuthors(volumeId);

            IEnumerable <AuthorWithType> bookAuthors = m_AuthorService.GetBookAuthors(volumeId);


            List <AuthorsGridViewModel> authorVms = new List <AuthorsGridViewModel>();

            foreach (AuthorWithType author in seriesAuthors.Union(volumeAuthors).Union(bookAuthors))
            {
                authorVms.Add(
                    new AuthorsGridViewModel
                {
                    Id         = author.Id,
                    Born       = author.Born,
                    Dead       = author.Dead,
                    Name       = author.Name,
                    Notes      = author.Notes,
                    AuthorType = author.AuthorType,
                    ItemId     = author.ItemId,
                }

                    );
            }

            return(authorVms);
        }
示例#3
0
        public void AttachVolumeToSeries(Id volumeId, Id seriesId)
        {
            VolumeSeries volumeSeries = new VolumeSeries
            {
                SeriesId = seriesId,
                VolumeId = volumeId,
            };

            m_DBService.InsertOrUpdate(volumeSeries);
        }
示例#4
0
        // Methods
        private void ConstructSample()
        {
            SuspendLayout();
            StockPane.PercentHeight = 75f;
            Pane pane = Panes.Add("VOL");

            pane.PercentHeight             = 25f;
            pane.YAxis.MinAuto             = false;
            pane.YAxis.Min                 = 0.0;
            pane.PaneFrame.TitleBoxVisible = false;
            ResumeLayout();
            var      series = new VolumeSeries("Volume");
            var      random = new Random();
            int      num    = random.Next(100, 150);
            DateTime date   = DateTime.Today.AddDays(1.0);

            for (int i = 0; i < 100; i++)
            {
                int maxValue = num + random.Next(5, 0x15);
                int minValue = num - random.Next(5, 0x15);
                int num4     = random.Next(minValue, maxValue);
                int num5     = random.Next(0x186a0, 0x989680);
                if (date.DayOfWeek == DayOfWeek.Friday)
                {
                    date = date.AddDays(3.0);
                }
                else if (date.DayOfWeek == DayOfWeek.Saturday)
                {
                    date = date.AddDays(2.0);
                }
                else
                {
                    date = date.AddDays(1.0);
                }
                StockSeries.Data.Add(num, maxValue, minValue, num4, date);
                series.Data.Add(num5);
                num += random.Next(-15, 0x15);
            }
            pane.Series.Add(series);
            var series2 = new LineSeries("MA 10");

            series2.Data.SetDataArray(Formula.ExponentialMovingAverage(StockSeries.Data, 10));
            StockPane.Series.Add(series2);
            FitChart();
        }
示例#5
0
        public override void OnAppearing(object navigationContext)
        {
            base.OnAppearing(navigationContext);

            PlotModel = new PlotModel
            {
                Title = "Volume"
            };

            var volumeSeries = new VolumeSeries
            {
                StrokeThickness = 2.0
            };

            volumeSeries.Items.Add(new OhlcvItem(1, 20, 4, 1, 1));
            volumeSeries.Items.Add(new OhlcvItem(2, 10, 6, 1, 2));
            volumeSeries.Items.Add(new OhlcvItem(3, 50, 3, 1, 0.5));

            PlotModel.Series.Add(volumeSeries);
        }
示例#6
0
 public void InsertOrUpdateVolumeSeries(VolumeSeries volumeSeries)
 {
     m_DBService.InsertOrUpdate(volumeSeries);
 }
示例#7
0
        /// <summary>
        /// Creates the volume series.
        /// </summary>
        /// <returns>The volume series.</returns>
        /// <param name="title">Title.</param>
        /// <param name="style">Style.</param>
        /// <param name="n">N.</param>
        /// <param name="natural">If set to <c>true</c> natural.</param>
        /// <param name="transposed">If set to <c>true</c> transposed.</param>
        private static Example CreateVolumeSeries(
            string title,
            VolumeStyle style,
            int n        = 10000,
            bool natural = false)
        {
            var pm = new PlotModel {
                Title = title
            };

            var series = new VolumeSeries
            {
                PositiveColor  = OxyColors.DarkGreen,
                NegativeColor  = OxyColors.Red,
                PositiveHollow = false,
                NegativeHollow = false,
                VolumeStyle    = style,
                Title          = "VolumeSeries",
            };

            // create bars
            foreach (var bar in OhlcvItemGenerator.MRProcess(n))
            {
                series.Append(bar);
            }

            // create visible window
            var Istart = n - 200;
            var Iend   = n - 120;
            var Xmin   = series.Items[Istart].X;
            var Xmax   = series.Items[Iend].X;

            // setup axes
            var timeAxis = new DateTimeAxis
            {
                Position = AxisPosition.Bottom,
                Minimum  = Xmin,
                Maximum  = Xmax
            };

            var volAxis = new LinearAxis
            {
                Position      = AxisPosition.Left,
                StartPosition = 0.0,
                EndPosition   = 1.0,
                Minimum       = natural ? double.NaN : 0,
                Maximum       = natural ? double.NaN : 10000
            };

            switch (style)
            {
            case VolumeStyle.Combined:
            case VolumeStyle.Stacked:
                pm.Axes.Add(timeAxis);
                pm.Axes.Add(volAxis);
                break;

            case VolumeStyle.PositiveNegative:
                volAxis.Minimum = natural ? double.NaN : -10000;
                pm.Axes.Add(timeAxis);
                pm.Axes.Add(volAxis);
                break;
            }

            pm.Series.Add(series);

            var controller = new PlotController();

            controller.UnbindAll();
            controller.BindMouseDown(OxyMouseButton.Left, PlotCommands.PanAt);
            return(new Example(pm, controller));
        }