public void Initialize(string currency, string year, List <string> periods, int cases, string statisticsPath, string forexTreesPath) { FullForexTreesPath = Path.Combine(forexTreesPath, currency, year); _forexMarketService.SetForexTreesPath(FullForexTreesPath); foreach (var month in _months) { foreach (var period in periods) { var fileName = string.Format("EURUSD_2014_{0}_{1}.csv", month, period); var fullPath = Path.Combine(statisticsPath, fileName); _statisticsService.ReadStatisticsData(fullPath); _statisticsService.PrepareData(); _statisticsService.StatisticsSequence.RemoveAll(x => x.Cases < cases); var sequence = new List <StatisticsSequenceDto>(); sequence.AddRange(_statisticsService.StatisticsSequence); StatisticsSequences.Add(new MonthPeriodKey(month, period), sequence); _statisticsService.ResetSequence(); } } _initialised = true; }
public void PrepareForAlgorithm(DecisionTreeAlgorithm algorithm) { Algorithm = algorithm; _forexTradingAgentService.Algorithm = algorithm; switch (algorithm) { case DecisionTreeAlgorithm.C45: foreach (var sequence in StatisticsSequences.Select(sequenceElement => sequenceElement.Value)) { sequence.Sort(delegate(StatisticsSequenceDto sequenceDtoOne, StatisticsSequenceDto sequenceDtoTwo) { var errorsOne = (double)sequenceDtoOne.C45Errors / sequenceDtoOne.Cases; var errorsTwo = (double)sequenceDtoTwo.C45Errors / sequenceDtoTwo.Cases; return(errorsOne.CompareTo(errorsTwo)); }); } break; case DecisionTreeAlgorithm.C50: foreach (var sequence in StatisticsSequences.Select(sequenceElement => sequenceElement.Value)) { sequence.Sort(delegate(StatisticsSequenceDto sequenceDtoOne, StatisticsSequenceDto sequenceDtoTwo) { var errorsOne = (double)sequenceDtoOne.C50Errors / sequenceDtoOne.Cases; var errorsTwo = (double)sequenceDtoTwo.C50Errors / sequenceDtoTwo.Cases; return(errorsOne.CompareTo(errorsTwo)); }); } break; default: throw new ArgumentOutOfRangeException("algorithm", algorithm, null); } _prepared = true; }