diff --git a/MarketData.csproj b/MarketData.csproj index 8aff78b..06c198f 100644 --- a/MarketData.csproj +++ b/MarketData.csproj @@ -71,6 +71,7 @@ + diff --git a/Program.cs b/Program.cs index 39f2007..13507b8 100644 --- a/Program.cs +++ b/Program.cs @@ -16,7 +16,6 @@ using MarketData.Numerical; using MarketData.ValueAtRisk; using MarketData.Integration; using MarketData.Generator.Momentum; -using MarketData.Generator.CMMomentum; using MarketData.MarketDataModel.GainLoss; using MarketData.Cache; using MarketData.Generator.CMTrend; @@ -24,7 +23,6 @@ using Axiom.Interpreter; using System.Data; using MarketData.Generator.MovingAverage; using MarketData.Generator.MGSHMomentum; -using System.Net; namespace MarketData { @@ -1828,35 +1826,19 @@ namespace MarketData // ************************************************************************************************************************************************************************************************************************* else if(arg.Equals("RUNCMBACKTEST")) // CMMOMENTUM { - RunCMMomentum(args); + CMMomentumHelper.RunCMMomentum(args); } else if (arg.Equals("CMSESSION")) // CMMOMENTUM { - CommandArgs commandArgs = new CommandArgs(args); - if (!commandArgs.Has("SESSIONFILE")) {MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Missing SESSIONFILE"));return 0;} - CMMomentumBacktest cmBacktest = new CMMomentumBacktest(); - cmBacktest.DisplaySession(commandArgs.Coalesce("SESSIONFILE")); + CMMomentumHelper.RunCMSession(args); } else if(arg.Equals("CMGAINLOSS")) // CMMOMENTUM { - CommandArgs commandArgs=new CommandArgs(args); - if(!commandArgs.Has("SESSIONFILE")) { MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Missing SESSIONFILE")); return 0; } - CMMomentumBacktest cmBacktest=new CMMomentumBacktest(); - cmBacktest.DisplayGainLoss(commandArgs.Coalesce("SESSIONFILE")); + CMMomentumHelper.RunCMGainLoss(args); } else if (arg.Equals("CMCANDIDATELASTRESORT")) // CMMOMENTUM { - CMParams cmParams = new CMParams(); - List candidates = Utility.ToList(cmParams.FallbackCandidateBestOf); - CommandArgs commandArgs = new CommandArgs(args); - if (!commandArgs.Has("TRADEDATE")) { MDTrace.WriteLine(LogLevel.DEBUG, "TRADEDATE required"); return 0; } - CMCandidate cmCandidate = CMCandidateGenerator.GetFallbackCandidateOfLastResort(candidates, commandArgs.Coalesce("TRADEDATE"), commandArgs.Coalesce("TRADEDATE"), cmParams); - if (null == cmCandidate) { MDTrace.WriteLine(LogLevel.DEBUG, "Unable to determine candidate of last resort."); return 0; } - foreach (String candidate in candidates) - { - MDTrace.WriteLine(LogLevel.DEBUG, String.Format("Candidate examined..{0}", candidate)); - } - MDTrace.WriteLine(LogLevel.DEBUG, String.Format("Best candidate is {0}", cmCandidate.Symbol)); + CMMomentumHelper.RunCMCandidateLastResort(args); } else { @@ -4214,82 +4196,5 @@ namespace MarketData MDTrace.WriteLine(LogLevel.DEBUG,String.Format("{0}",momentumCandidate.ToString())); } } - -// ********************************************************************************************************************************************************************************************** -// *************************************************************************** C M M O M E N T U M ( B A C K T E S T & M O N T H L Y) *********************************************************** -// ********************************************************************************************************************************************************************************************** - public static void RunCMMomentum(String[] args) - { - CommandArgs commandArgs=new CommandArgs(args); - if(!commandArgs.Has("STARTDATE,MAXPOSITIONS,INITIALCASH,HOLDINGPERIOD")) - { - if(!commandArgs.Has("STARTDATE")) MDTrace.WriteLine(LogLevel.DEBUG,"Missing STARTDATE"); - if(!commandArgs.Has("MAXPOSITIONS")) MDTrace.WriteLine(LogLevel.DEBUG,"Missing MAXPOSITIONS"); - if(!commandArgs.Has("INITIALCASH")) MDTrace.WriteLine(LogLevel.DEBUG,"Missing INITIALCASH"); - if(!commandArgs.Has("HOLDINGPERIOD")) MDTrace.WriteLine(LogLevel.DEBUG,"Missing HOLDINGPERIOD"); - return; - } - - CMParams cmParams=new CMParams(); - cmParams.AnalysisDate=commandArgs.Get("STARTDATE"); - cmParams.MaxPositions=commandArgs.Get("MAXPOSITIONS"); - cmParams.InitialCash=commandArgs.Get("INITIALCASH"); - cmParams.HoldingPeriod=commandArgs.Get("HOLDINGPERIOD"); - - if(commandArgs.Has("USECNN")) - { - if(!commandArgs.Has("USECNNCLIENT,USECNNDAYCOUNT")) - { - MDTrace.WriteLine(LogLevel.DEBUG,"Missing USECNNCLIENT, USECNNDAYCOUNT"); - return; - } - cmParams.UseCNN=true; - cmParams.UseCNNHost=commandArgs.Get("USECNNHOST"); - cmParams.UseCNNDayCount=commandArgs.Get("USECNNDAYCOUNT"); - if(commandArgs.Has("USECNNREWARDPERCENTDECIMAL"))cmParams.UseCNNRewardPercentDecimal=commandArgs.Get("USECNNREWARDPERCENTDECIMAL"); - } - - if(commandArgs.Has("USEOVEREXTENDEDINDICATOR")) - { - if(!commandArgs.Has("USEOVEREXTENDEDINDICATORDAYS,USEOVEREXTENDEDINDICATORVIOLATIONTHRESHHOLD,USEOVEREXTENDEDINDICATORMARGINPERCENT")) - { - MDTrace.WriteLine(LogLevel.DEBUG,"Missing USEOVEREXTENDEDINDICATORDAYS, USEOVEREXTENDEDINDICATORVIOLATIONTHRESHHOLD, USEOVEREXTENDEDINDICATORMARGINPERCENT"); - return; - } - cmParams.UseOverExtendedIndicator=commandArgs.Get("USEOVEREXTENDEDINDICATOR"); - cmParams.UseOverExtendedIndicatorDays=commandArgs.Get("USEOVEREXTENDEDINDICATORDAYS"); - cmParams.UseOverExtendedIndicatorViolationThreshhold=commandArgs.Get("USEOVEREXTENDEDINDICATORVIOLATIONTHRESHHOLD"); - cmParams.UseOverExtendedIndicatorMarginPercent=commandArgs.Get("USEOVEREXTENDEDINDICATORMARGINPERCENT"); - } - - - if(commandArgs.Has("USEMAXPOSITIONBUCKETWEIGHT")) // UseMaxPositionBucketWeight - { - if(!commandArgs.Has("USEMAXPOSITIONBUCKETWEIGHTMAXWEIGHT")) // UseMaxPositionBucketWeightMaxWeight - { - MDTrace.WriteLine(LogLevel.DEBUG,"Missing USEMAXPOSITIONBUCKETWEIGHTMAXWEIGHT"); - return; - } - cmParams.UseMaxPositionBucketWeight=commandArgs.Get("USEMAXPOSITIONBUCKETWEIGHT"); - cmParams.UseMaxPositionBucketWeightMaxWeight=commandArgs.Get("USEMAXPOSITIONBUCKETWEIGHTMAXWEIGHT"); - } - else - { - cmParams.UseMaxPositionBucketWeight=false; - cmParams.UseMaxPositionBucketWeightMaxWeight=0; - } - - if(commandArgs.Has("TARGETBETA"))cmParams.TargetBeta=commandArgs.Get("TARGETBETA"); - else cmParams.TargetBeta=1.00; - - DateTime endDate=DateTime.Now; - String pathSessionFileName=commandArgs.Coalesce("SESSIONFILE",null); - if(null!=pathSessionFileName) pathSessionFileName=pathSessionFileName.Trim(); - cmParams.DisplayHeader(); - - CMMomentumBacktest backtestMomentum=new CMMomentumBacktest(); - List results=new List(); - results.Add(backtestMomentum.PerformBacktest(cmParams.AnalysisDate,endDate,pathSessionFileName,cmParams)); - } } }