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)); }
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)); }
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)); }
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)); }
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)); }
protected void OnNewMarket(object stocksInfo) { NewMarket?.Invoke(stocksInfo); }