コード例 #1
0
        public void Market()
        {
            Random rnd = new Random();

            stocksInfo.USD  = rnd.Next(20, 40);
            stocksInfo.Euro = rnd.Next(30, 50);
            NewMarket?.Invoke(this, new NewMarketEventArgs(stocksInfo));
        }
コード例 #2
0
        public ActionResult EnterDataROC(EnterDataROC enterDataROC)
        {
            if (ModelState.IsValid)
            {
                Double           ROC;
                List <NewMarket> marketObject = new List <NewMarket>();
                DateTime         time         = new DateTime(1899, 12, 30, 23, 59, 00);
                int       p           = enterDataROC.period;
                NewMarket newMarket   = new NewMarket();
                DateTime  currentdate = enterDataROC.SelectDate;
                DateTime  daybefore   = currentdate.AddDays(-p);

                marketObject = _context.NewMarkets.OrderBy(c => c.date).Where(c => c.type == enterDataROC.Market && c.date >= daybefore && c.date <= enterDataROC.SelectDate && c.time == time).ToList();

                ROC = (marketObject[marketObject.Count - 1].closingPrice - marketObject[0].closingPrice) * 100 / marketObject[0].closingPrice;

                ViewBag.C = ROC;
                return(View());
            }

            return(View(enterDataROC));
        }
コード例 #3
0
        public ActionResult EnterDataSD(EnterDataSD enterDataSD)
        {
            if (ModelState.IsValid)
            {
                if (enterDataSD.StartDate >= enterDataSD.EndDate)
                {
                    ViewBag.Message = "Start date should be younger than the end date!";
                    return(View());
                }
                int    i;
                double SD;
                double add;
                double addlist = 0;

                List <NewMarket> marketObject = new List <NewMarket>();
                DateTime         time         = new DateTime(1899, 12, 30, 23, 59, 00);
                NewMarket        newMarket    = new NewMarket();

                DateTime dat1 = enterDataSD.StartDate;
                DateTime dat2 = enterDataSD.EndDate;

                marketObject = _context.NewMarkets.OrderBy(c => c.date).Where(c => c.type == enterDataSD.Market && c.date >= enterDataSD.StartDate && c.time == time && c.date <= enterDataSD.EndDate && c.time == time).ToList();

                for (i = 0; i < marketObject.Count - 1; i++)
                {
                    add      = marketObject[i].closingPrice * marketObject[i].closingPrice;
                    addlist += add;
                }

                SD        = Math.Sqrt(addlist) / marketObject.Count;
                ViewBag.B = SD;
                return(View());
            }

            return(View(enterDataSD));
        }
コード例 #4
0
        public ActionResult EnterDataRSI(EnterDataRSI enterDataRSI)
        {
            if (ModelState.IsValid)
            {
                if (enterDataRSI.StartDate >= enterDataRSI.EndDate)
                {
                    ViewBag.Message = "Start date should be younger than the end date!";
                    return(View());
                }
                DateTime         time            = new DateTime(1899, 12, 30, 23, 59, 00);
                List <NewMarket> marketObject    = new List <NewMarket>();
                List <NewMarket> newmarketObject = new List <NewMarket>();
                List <DateTime>  xaxis           = new List <DateTime>();

                List <double> posDif    = new List <double>();
                List <double> negDif    = new List <double>();
                double        avgLost   = 0;
                double        avgGain   = 0;
                double        totalLost = 0;
                double        totalGain = 0;

                NewMarket newMarket = new NewMarket();
                DateTime  dat       = enterDataRSI.StartDate;


                DateTime daybefore = dat.AddDays(-enterDataRSI.Range - 1);
                marketObject = _context.NewMarkets.OrderBy(c => c.date).Where(c => c.type == enterDataRSI.Market && c.date >= daybefore && c.date <= enterDataRSI.EndDate && c.time == time).ToList();

                List <double> RSIList = new List <double>();

                for (int i = 0; i < enterDataRSI.Range + 1; i++)
                {
                    double priceDif = marketObject[i].closingPrice - marketObject[i + 1].closingPrice;
                    if (priceDif < 0)
                    {
                        totalLost = totalLost + priceDif;
                    }
                    else
                    {
                        totalGain = totalGain + priceDif;
                    }
                }
                avgLost = totalLost / enterDataRSI.Range;
                avgGain = totalGain / enterDataRSI.Range;
                var rsi = 100 - (100 / (1 + Math.Abs(avgGain / avgLost)));

                var rsiList = new List <double>();
                rsiList.Add(rsi);

                for (int i = enterDataRSI.Range + 1; i < marketObject.Count - 1; i++)
                {
                    var current = marketObject[i + 1].closingPrice - marketObject[i].closingPrice;
                    if (current < 0)
                    {
                        avgLost = ((avgLost * (enterDataRSI.Range - 1)) + current) / enterDataRSI.Range;
                    }
                    else
                    {
                        avgGain = ((avgGain * (enterDataRSI.Range - 1)) + current) / enterDataRSI.Range;
                    }
                    rsi = 100 - (100 / (1 + Math.Abs(avgGain / avgLost)));
                    rsiList.Add(rsi);

                    xaxis.Add(enterDataRSI.StartDate.AddDays(i - enterDataRSI.Range - 1));
                }
                ViewBag.RsiList  = rsiList;
                ViewBag.DateList = xaxis;
                return(View());
            }

            return(View(enterDataRSI));
        }
コード例 #5
0
        public IHttpActionResult GetRsi(string type, string startdate, string range)
        {
            DateTime                 time            = new DateTime(1899, 12, 30, 23, 59, 00);
            List <NewMarket>         marketObject    = new List <NewMarket>();
            List <NewMarket>         newmarketObject = new List <NewMarket>();
            List <DateTime>          xaxis           = new List <DateTime>();
            List <SendDataViewModel> obj             = new List <SendDataViewModel>();

            List <double> posDif    = new List <double>();
            List <double> negDif    = new List <double>();
            double        avgLost   = 0;
            double        avgGain   = 0;
            double        totalLost = 0;
            double        totalGain = 0;

            NewMarket newMarket = new NewMarket();
            DateTime  dat       = DateTime.Parse(startdate);
            DateTime  enDate    = dat.AddDays(10);
            int       newRange  = Convert.ToInt32(range);

            DateTime daybefore = dat.AddDays(-newRange - 1);

            marketObject = _context.NewMarkets.OrderBy(c => c.date).Where(c => c.type == type && c.date >= daybefore && c.date <= enDate && c.time == time).ToList();

            List <double> RSIList = new List <double>();

            for (int i = 0; i < newRange + 1; i++)
            {
                double priceDif = marketObject[i].closingPrice - marketObject[i + 1].closingPrice;
                if (priceDif < 0)
                {
                    totalLost = totalLost + priceDif;
                }
                else
                {
                    totalGain = totalGain + priceDif;
                }
            }
            avgLost = totalLost / newRange;
            avgGain = totalGain / newRange;
            var rsi = 100 - (100 / (1 + Math.Abs(avgGain / avgLost)));

            var rsiList = new List <double>();

            rsiList.Add(rsi);

            for (int i = newRange + 1; i < marketObject.Count - 1; i++)
            {
                var current = marketObject[i + 1].closingPrice - marketObject[i].closingPrice;
                if (current < 0)
                {
                    avgLost = ((avgLost * (newRange - 1)) + current) / newRange;
                }
                else
                {
                    avgGain = ((avgGain * (newRange - 1)) + current) / newRange;
                }
                rsi = 100 - (100 / (1 + Math.Abs(avgGain / avgLost)));

                SendDataViewModel sendData = new SendDataViewModel()
                {
                    date  = dat.AddDays(i - newRange - 1),
                    value = rsi
                };
                obj.Add(sendData);
            }
            return(Json(obj));
        }
コード例 #6
0
 protected void OnNewMarket(object stocksInfo)
 {
     NewMarket?.Invoke(stocksInfo);
 }