示例#1
0
        public static List<StockQuarter> GetStocks(int minVol)
        {
            var quarters = new List<StockQuarter>();

            using (MomentumData.MomentumEntities ctx = new MomentumData.MomentumEntities())
            {
                foreach (var ticker in GetTickers())
                {
                    var quotes = ctx.StockDays.Where(p => p.Ticker == ticker).ToList();
                    var qtr0 = quotes.Where(p => p.DateStamp.Date >= DateTime.Now.AddMonths(-12).Date && p.DateStamp.Date < DateTime.Now.AddMonths(-11).Date).OrderBy(p => p.DateStamp).FirstOrDefault();
                    var qtr1 = quotes.Where(p => p.DateStamp.Date >= DateTime.Now.AddMonths(-9).Date && p.DateStamp.Date < DateTime.Now.AddMonths(-8).Date).OrderBy(p => p.DateStamp).FirstOrDefault();
                    var qtr2 = quotes.Where(p => p.DateStamp.Date >= DateTime.Now.AddMonths(-6).Date && p.DateStamp.Date < DateTime.Now.AddMonths(-5).Date).OrderBy(p => p.DateStamp).FirstOrDefault();
                    var qtr3 = quotes.Where(p => p.DateStamp.Date >= DateTime.Now.AddMonths(-3).Date && p.DateStamp.Date < DateTime.Now.AddMonths(-2).Date).OrderBy(p => p.DateStamp).FirstOrDefault();
                    var qtr4 = quotes.Where(p => p.DateStamp.Date >= DateTime.Now.AddDays(-7).Date && p.DateStamp.Date < DateTime.Now.AddDays(-1).Date).OrderByDescending(p => p.DateStamp).FirstOrDefault();
                    if (qtr0 != null && qtr1 != null && qtr2 != null && qtr3 != null && qtr4 != null)
                    {
                        double volume = 0;
                        foreach (var day in quotes)
                        {
                            volume += ((double)day.Volume) / quotes.Count();
                        }

                        var full = ctx.StockDays.First(p => p.Ticker == ticker).Name;
                        var quarter = new StockQuarter()
                        {
                            Ticker = ticker,
                            FullName = full,
                            AverageVolumeTraded = volume,
                            Quarter1 = qtr1.Close,
                            Quarter1Move = (qtr1.Close - qtr0.Close) / qtr0.Close * 100,
                            Quarter2 = qtr2.Close,
                            Quarter2Move = (qtr2.Close - qtr1.Close) / qtr1.Close * 100,
                            Quarter3 = qtr3.Close,
                            Quarter3Move = (qtr3.Close - qtr2.Close) / qtr2.Close * 100,
                            Quarter4 = qtr4.Close,
                            Quarter4Move = (qtr4.Close - qtr3.Close) / qtr3.Close * 100,
                            Half1Move = (qtr2.Close - qtr0.Close) / qtr0.Close * 100,
                            Half2Move = (qtr4.Close - qtr2.Close) / qtr2.Close * 100,
                            YearMove = (qtr4.Close - qtr0.Close) / qtr0.Close * 100,
                            Quarter1Top5 = false,
                            Quarter2Top5 = false,
                            Quarter3Top5 = false,
                            Quarter4Top5 = false,
                            Half1Top5 = false,
                            Half2Top5 = false,
                            YearTop5 = false
                        };
                        quarters.Add(quarter);
                    }
                }
            }

            return quarters.Where(p => p.AverageVolumeTraded > minVol).ToList();
        }
示例#2
0
        public static void Build()
        {
            var tickers = GetTickers();

            using (MomentumData.MomentumEntities ctx = new MomentumData.MomentumEntities())
            {
                foreach (var entry in tickers)
                {
                    var last = ctx.StockDays.Where(p => p.Ticker == entry).OrderByDescending(p => p.DateStamp).FirstOrDefault();
                    if (last == null || last.DateStamp.Date < DateTime.Now.AddDays(-3).Date)
                    {
                        using (WebClient wc = new WebClient())
                        {
                            wc.Proxy = new System.Net.WebProxy("ntswhoproxy01:8080");
                            wc.Proxy.Credentials = new System.Net.NetworkCredential(@"woolworths\w7052442", "!Jan2013");
                            try
                            {
                                var data = wc.DownloadString(string.Format(Fin24Link, entry, 1));
                                var quote = JsonConvert.DeserializeObject<StockQuote>(data);
                                if (quote != null && quote.Result == 1)
                                {
                                    foreach (var item in quote.Object)
                                    {
                                        if (item.DateStamp.Date <= DateTime.Now.AddDays(-1).Date && ctx.StockDays.Count(p => p.Ticker == item.InstrumentIdentifier && p.DateStamp.Year == item.DateStamp.Year && p.DateStamp.Month == item.DateStamp.Month && p.DateStamp.Day == item.DateStamp.Day) == 0)
                                        {
                                            var newEntry = new MomentumData.StockDay();

                                            newEntry.Close = item.Close;
                                            newEntry.DateStamp = item.DateStamp;
                                            newEntry.High = item.High;
                                            newEntry.Low = item.Low;
                                            newEntry.Name = item.InstrumentName;
                                            newEntry.Open = item.Open;
                                            newEntry.Ticker = item.InstrumentIdentifier;
                                            newEntry.Volume = item.Volume;

                                            ctx.StockDays.AddObject(newEntry);
                                        }
                                    }
                                    ctx.SaveChanges();
                                }
                            }
                            catch { }
                        }
                    }
                }
            }
        }