public void LifetimeFilterTest()
        {
            var companies = new List <Company>();

            companies.Add(new Company()
            {
                Name  = "Short",
                Chart = new Candle[]
                {
                    new Candle()
                }
            });

            companies.Add(new Company()
            {
                Name  = "Long",
                Chart = new Candle[]
                {
                    new Candle(),
                    new Candle(),
                    new Candle()
                }
            });

            var result = new LifetimeFilter(2).Filter(companies.ToArray());

            Assert.AreEqual(1, result.Length);
            Assert.AreEqual("Long", result[0].Name);
        }
Esempio n. 2
0
        private IEnumerable <CompanyVM> FilterCompanies(decimal?percentage)
        {
            if (percentage == null)
            {
                percentage = 0;
            }

            var companiesArr = _companies.Select(x => new Company()
            {
                Name = x.Name, Chart = x.Chart
            }).ToArray();

            companiesArr = new LifetimeFilter(110).Filter(companiesArr);
            companiesArr = new SmaOverAnotherSmaFilter(50, 100).Filter(companiesArr);
            companiesArr = new DonchianChannelFilter(20, 1, percentage.Value).Filter(companiesArr);

            var retval = companiesArr.ToList();

            return(retval.Select(x => new CompanyVM(x)));
        }
        public string[] FilterCompanies(string[] tickers, decimal?percentage)
        {
            if (percentage == null)
            {
                percentage = 0;
            }

            var unprocessed = new List <string>();
            var companies   = new List <Company>();
            var downloader  = new QuoteDownloader();

            foreach (var ticker in tickers)
            {
                try
                {
                    var company = downloader.GetQuote(ticker);
                    companies.Add(company);
                }
                catch (Exception)
                {
                    unprocessed.Add(ticker);
                }
            }

            var companiesArr = companies.ToArray();

            //TODO: Add params
            companiesArr = new LifetimeFilter(110).Filter(companiesArr);
            companiesArr = new SmaOverAnotherSmaFilter(50, 100).Filter(companiesArr);
            companiesArr = new DonchianChannelFilter(20, 1, percentage.Value).Filter(companiesArr);

            var retval = companiesArr.Select(x => x.Name).ToList();

            if (unprocessed.Count > 0)
            {
                retval.Add("Couldn't process: " + string.Join(";", unprocessed.ToArray()));
            }

            return(retval.ToArray());
        }