using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using MarketData.MarketDataModel; using MarketData.Utils; using MarketData.DataAccess; using MarketData.Numerical; using MarketData.Cache; namespace MarketData.Generator.ModelGenerators { public class EdgeRatioGenerator { private EdgeRatioGenerator() { } public static EdgeRatioResult CalculateEdgeRatio(String symbol,DateTime purchaseDate,double purchasePrice,DateTime asOf) { EdgeRatioResult edgeRatioResult=new EdgeRatioResult(); DateGenerator dateGenerator=new DateGenerator(); DateTime lastBusinesDate=dateGenerator.GetPrevBusinessDay(asOf); Dictionary trueRangeResults=new Dictionary(); double[] mae=null; double[] mfe=null; double[] atr=null; try { List seriesDates=dateGenerator.GenerateHistoricalDates(purchaseDate,asOf); mae=new double[seriesDates.Count]; mfe=new double[seriesDates.Count]; atr=new double[seriesDates.Count]; double sumMAEPlusATR=0.00; double sumMFEPlusATR=0.00; double averageMAE=0.00; double averageMFE=0.00; asOf=dateGenerator.GetPrevBusinessDay(asOf); for(int index=0;index {4}",symbol,purchaseDate.ToShortDateString(),Utility.FormatCurrency(purchasePrice),purchaseDate.ToShortDateString(),asOf.ToShortDateString()); return edgeRatioResult; } catch(Exception exception) { edgeRatioResult.Message=exception.ToString(); return edgeRatioResult; } } } public class EdgeRatioResult { public EdgeRatioResult() { Success=false; EdgeRatio=double.NaN; Message=null; } public double EdgeRatio{get;set;} public bool Success{get;set;} public String Message{get;set;} } }