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