Esempio n. 1
0
        public void DonchianUpBreakout()
        {
            var companies = GenerateCompanies();
            var filter    = new DonchianChannelFilter(6, 1);

            var result  = filter.Filter(companies);
            var company = result[0];

            Assert.AreEqual(1, result.Length);
            Assert.AreEqual("UpBreakout", company.Name);
        }
Esempio n. 2
0
        public void DonchianDownBreakout()
        {
            var companies = GenerateCompanies();
            var filter    = new DonchianChannelFilter(6, -1);

            var result   = filter.Filter(companies);
            var company  = result[0];
            var company2 = result[1];

            Assert.AreEqual(2, result.Length);
            Assert.AreEqual("DownBreakout", company.Name);
            Assert.AreEqual("DownBreakout2", company2.Name);
        }
Esempio n. 3
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());
        }