示例#1
0
        public JsonResult PrepareData(string sec, DateTime from)
        {
            MicexISSClient client = new MicexISSClient(new WebApiClient());
            var            part1  = client.GetCandles(sec, from, from.AddHours(14), "1").Result;
            var            part2  = client.GetCandles(sec, from.AddHours(14).AddMinutes(1), from.AddHours(19), "1").Result;

            List <ICandle> candles = new List <ICandle>();

            candles.AddRange(part1);
            candles.AddRange(part2);


            //using (DataContext context = new DataContext())
            //{
            //    context.Database.
            //}

            using (UnitOfWork unit = new UnitOfWork((DbContext) new DataContext()))
            {
                int key = 0;

                if (unit.CandleRepository.All <EIDService.Common.Entities.Candle>(null).Count() > 0)
                {
                    key = unit.CandleRepository.All <EIDService.Common.Entities.Candle>(null).Max(c => c.Id);
                }

                foreach (ICandle candle in candles)
                {
                    key++;
                    EIDService.Common.Entities.Candle entity = new Common.Entities.Candle();
                    entity.Id         = key;
                    entity.CandleDate = candle.begin.ToString("yyyyMMdd");
                    entity.CandleTime = candle.begin.ToString("HHmm00");
                    entity.MaxPrice   = candle.high;
                    entity.MinPrice   = candle.low;
                    entity.OpenPrice  = candle.open;
                    entity.ClosePrice = candle.close;
                    entity.Volume     = candle.volume;
                    entity.Value      = candle.value;
                    entity.Code       = sec;

                    unit.CandleRepository.Create(entity);
                }

                unit.Commit();
            }

            return(Json("ok", JsonRequestBehavior.AllowGet));
        }
示例#2
0
        public IEnumerable <ICandle> Get(CandleRequestModel request)
        {
            IDictionary <Func <CandleRequestModel, bool>, Action> actions = new Dictionary <Func <CandleRequestModel, bool>, Action>();

            IEnumerable <ICandle> candles = null;


            actions.Add((pr) => { return(!string.IsNullOrEmpty(pr.security) && pr.from.HasValue); }, () =>
            {
                MicexISSClient client = new MicexISSClient(new WebApiClient());

                DateTime?till = null;


                IDictionary <string, Func <CandleRequestModel, IList <UTRADE.Library.ICandle> > > interval_actions = new Dictionary <string, Func <CandleRequestModel, IList <UTRADE.Library.ICandle> > >();

                interval_actions.Add("1", (req) =>
                {
                    return(client.GetCandles(request.security, request.from.Value, till, request.interval).Result);
                });

                interval_actions.Add("60", (req) =>
                {
                    return(client.GetCandles(request.security, request.from.Value, till, request.interval).Result);
                });

                interval_actions.Add("D", (req) =>
                {
                    return(client.GetHistory(request.security, request.from.Value, till).Result);
                });


                try
                {
                    candles = interval_actions[request.interval].Invoke(request);
                }
                catch (Exception ex)
                {
                    string msg = ex.Message;
                    //Logger.Log.Error("ошибка", ex);
                }
            });

            actions.Single(f => f.Key.Invoke(request)).Value.Invoke();

            return(candles);
        }
示例#3
0
        // GET api/candle
        public IEnumerable <ICandle> Get([FromUri] RequestModel request)
        {
            Logger.InitLogger();

            IDictionary <Func <RequestModel, bool>, Action> actions = new Dictionary <Func <RequestModel, bool>, Action>();

            IEnumerable <ICandle> candles = null;

            Settings settings = null;

            using (UnitOfWork unit = new UnitOfWork((DbContext) new DataContext()))
            {
                settings = unit.SettingsRepository.All <Settings>(null).Single();
            }

            actions.Add((pr) => { return(!pr.from.HasValue); }, () =>
            {
                EIDService.Common.CandleToISS candleToISS = new Common.CandleToISS();
                using (UnitOfWork unit = new UnitOfWork((DbContext) new DataContext()))
                {
                    var tempData = unit.CandleRepository.All <EIDService.Common.Entities.Candle>(null).ToList();
                    candles      = tempData.Select(c => candleToISS.Convert(c));

                    if (settings.ModeType == ModeType.Test)
                    {
                        candles = candles.Where(c => c.begin < settings.TestDateTime);
                        settings.TestDateTime = settings.TestDateTime.AddMinutes(1);

                        unit.SettingsRepository.Update(settings);
                        unit.Commit();

                        CandlesConverter converter = new CandlesConverter(() => { return(new EID.Library.ISS.Candle()); });
                        candles = converter.Convert(candles.ToList(), 1, 5);
                    }
                }
            });

            actions.Add((pr) => { return(!string.IsNullOrEmpty(pr.security) && pr.from.HasValue); }, () =>
            {
                MicexISSClient client = new MicexISSClient(new WebApiClient());

                DateTime?till = null;
                if (settings.ModeType == ModeType.Test)
                {
                    till = settings.TestDateTime;
                }

                IDictionary <string, Func <RequestModel, IList <EID.Library.ICandle> > > interval_actions = new Dictionary <string, Func <RequestModel, IList <EID.Library.ICandle> > >();

                interval_actions.Add("1", (req) =>
                {
                    return(client.GetCandles(request.security, request.from.Value, till, request.interval).Result);
                });

                interval_actions.Add("60", (req) =>
                {
                    return(client.GetCandles(request.security, request.from.Value, till, request.interval).Result);
                });

                interval_actions.Add("D", (req) =>
                {
                    return(client.GetHistory(request.security, request.from.Value, till).Result);
                });


                try
                {
                    candles = interval_actions[request.interval].Invoke(request);

                    Logger.Log.InfoFormat("Данные с ММВБ получены. Count {0}", candles.Count());
                }
                catch (Exception ex)
                {
                    Logger.Log.Error("ошибка", ex);
                }
            });

            actions.Single(f => f.Key.Invoke(request)).Value.Invoke();

            return(candles);
        }