Exemplo n.º 1
0
        public IPriceSeries ForStock(StockHandle stock)
        {
            var prices = RealDataSource.ForStock(stock);

            var series = CreateSeries(stock, prices);

            series = ApplyOperators(series);

            return(series);
        }
Exemplo n.º 2
0
        private void SetUpPlot(string valType, RealDataSource realSource)
        {
            PlotModel = new OxyPlot.PlotModel
            {
                Title                   = ParametersFactory.GetName(valType),
                Subtitle                = "данные от " + realSource.Name,
                TitlePadding            = 0,
                Padding                 = new OxyThickness(1, 10, 1, 0),
                PlotAreaBorderThickness = 1,
                PlotAreaBorderColor     = OxyColor.FromAColor(64, OxyColors.Black),
            };

            var valueAxis = new LinearAxis(AxisPosition.Left)
            {
                AbsoluteMinimum    = 0,
                MinimumPadding     = 0,
                MaximumPadding     = 0.05,
                MajorGridlineStyle = LineStyle.Solid,
                MinorGridlineStyle = LineStyle.Dot
            };

            PlotModel.Axes.Add(valueAxis);
        }
Exemplo n.º 3
0
        void FetchRealData(Station station, RealDataSource source, bool force = false)
        {
            if (!(force || !source.IsNewDataReady(station)))
            {
                return;
            }

            Weather weather = null;

            try
            {
                weather = source.GetWeatherReal(station);
                OnFetchingSucceeded(station, source, weather.FetchedTime);
            }
            catch (ResponseParsingException e)
            {
                Trace.TraceError(String.Format("Response parsing error when fetching {0} forecast from {1}: {2}", station, source.Id, e.Message));
                OnFetchingFailed(station, source, "ответ сервера не разобран");
            }
            catch (NoLatLongException e)
            {
                Trace.TraceError(String.Format("Coordinates of {0} needed for {1}. {2}", station, source.Id, e.Message));
                OnFetchingFailed(station, source, "требуются координаты станции");
            }
            catch (NoStationOffsetException e)
            {
                Trace.TraceError(String.Format("UTC offset of {0} needed for {1}. {2}", station, source.Id, e.Message));
                OnFetchingFailed(station, source, "требуется часовой пояс станции");
            }

            if (weather != null)
            {
                ForecastsDatabase.Save(weather);
            }
            return;
        }
Exemplo n.º 4
0
        public static Dictionary <string, PlotData> GetGroupedByParameterAccuracyPlots(AccuracyRequest request)
        {
            var result          = new Dictionary <string, PlotData>();
            var loadedForecasts = new Dictionary <IAbstractDataSource, IEnumerable <Forecast> >();

            foreach (var source in request.Sources)
            {
                loadedForecasts.Add(
                    source, ForecastsDatabase.Load(
                        request.Station,
                        source,
                        GetValidTimeDates(request.Date, GivenForecastTimeKind.Valid, source)));
            }

            int plotsKey = GeneratePlotGroupKey();

            int      hours = request.AccuracyComparison == AccuracyComparison.HalfDay ? 12 : 24;
            DateTime date  = request.Date;

            var realSources = request.Sources.Where(s => s is RealDataSource).Cast <RealDataSource>();

            if (realSources.Count() == 0)
            {
                realSources = SourcesDirector.Instance.RealDataSources;
            }
            if (realSources.Count() == 0)
            {
                OnSelectingFailed("Не выбран источник реальных данных.");
                return(result);
            }
            RealDataSource realSource = realSources.First();

            try
            {
                foreach (var parameterType in request.ParameterTypes)
                {
                    var dict = (from source in request.Sources
                                where source is ForecastDataSource
                                where source.Parameters.Contains(parameterType)
                                let allSeries = from f in FilterForecastsForSingleDate(loadedForecasts[source], TimeSpan.FromHours(hours), date)
                                                select GetSeries(f.ToIEnumerable(), GivenForecastTimeKind.Created, parameterType, f.CreationTime)
                                                where allSeries.Count() > 0
                                                select new
                    {
                        Key = source,
                        Value = allSeries.MergeSeries()
                    }).ToDictionary(item => item.Key, item => item.Value);

                    var real = from f in loadedForecasts[realSource]
                               group f by GetForecastGroupingTime(f, GivenForecastTimeKind.Valid) into fByValidTime
                                   where IsSuitableDateTime(fByValidTime.Key, date, RequestTimeDeterminateness.AllDay)
                               select GetSeries(fByValidTime.ToList(), GivenForecastTimeKind.Created, parameterType, fByValidTime.Key);

                    dict.Add(realSource, real.MergeSeries());
                    result.Add(parameterType, new PlotData(plotsKey, parameterType, dict));
                }
            }
            catch (Exception e)
            {
                OnSelectingFailed(e.Message);
            }

            return(result);
        }
Exemplo n.º 5
0
 public AccuracyResult(string parameterType, RealDataSource realSource, Dictionary <ForecastDataSource, Dictionary <StatisticMethods, double> > dict)
 {
     Values        = dict;
     RealSource    = realSource;
     ParameterType = parameterType;
 }