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); } }