public StrategyAnalyzer()
 {
     var fxEntities = new FXEntities.FXEntities();
     _currencyDataSource = new CurrencyDataSource(fxEntities);
     _currencyDataSource.PreLoad();
 }
        public void ExecutionTimeTest()
        {
            TradingStrategy tradingStratgy = ConstructTradingStrategy();

            FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
            CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities);
            currencyDataSource.PreLoad();
            StrategyInterpreter target = new StrategyInterpreter(fxEntities, currencyDataSource);
            DateTime startExecutionTime;
            DateTime endExecutionTime;
            DateTime startDate = new DateTime(2000, 1, 1);
            List<List<double>> results = new List<List<double>>();
            StringBuilder output = new StringBuilder();
            for (int j = 0; j < 10; j++)
            {
                results.Add(new List<double>());
                output.AppendLine("Run no.: " + j);
                for (int i = 0; i < 11; i++)
                {
                    startExecutionTime = DateTime.Now;
                    target.Execute(tradingStratgy, startDate, startDate.AddYears(i + 1));
                    endExecutionTime = DateTime.Now;
                    results[j].Add((endExecutionTime - startExecutionTime).TotalMilliseconds);
                    output.AppendLine(String.Format("Execution time: {0}ms, Number of positionRecord: {1} ",
                        (endExecutionTime - startExecutionTime).TotalMilliseconds,
                        target.PositionSetTable.Sum(p => p.Value.Positions.SelectMany(pos => pos.PositionRecords).Count()
                        )
                        ));
                    target.Clear();

                    //results.Add(endExecutionTime - startExecutionTime);
                }
                output.AppendLine();
            }

            output.AppendLine("Average: ");
            for (int i = 0; i < 10; i++)
            {
                output.AppendLine( (i+1) + " Year: \t" + results.Select(r => r.ElementAt(i)).Average());
            }


            using (StreamWriter writer = new StreamWriter(@"D:\Documents\Study Materials\Master Thesis\Main Thesis\executionTime.txt"))
            {
                
                //for (int i = 1; i <= 10; i++)
                //{
                //    output += String.Format(results[i - 1].Milliseconds + " ms \n");
                //}

                writer.WriteLine(output);
            }

            
        }