diff --git a/MarketData.csproj b/MarketData.csproj
index 37dea51..ff5a4f4 100644
--- a/MarketData.csproj
+++ b/MarketData.csproj
@@ -74,6 +74,7 @@
+
diff --git a/Program.cs b/Program.cs
index 4cc2f2b..39d1755 100644
--- a/Program.cs
+++ b/Program.cs
@@ -185,7 +185,7 @@ namespace MarketData
MDTrace.WriteLine(LogLevel.DEBUG,"*********** M G M O M E N T U M (Q U A N T U M M O M E N T U M )************");
MDTrace.WriteLine(LogLevel.DEBUG," MGSESSION /SESSIONFILE:");
MDTrace.WriteLine(LogLevel.DEBUG,@" MGGAINLOSS /SESSIONFILE:{PATHSESSIONFILE} (i.e.) MGGAINLOSS /SESSIONFILE:C:\boneyard\marketdata\bin\Debug\saferun\MG20180131.txt");
- MDTrace.WriteLine(LogLevel.DEBUG," RUNBACKTEST /STARTDATE: /MAXPOSITIONS: /INITIALCASH: /HOLDINGPERIOD: /{ENDDATE}: /SESSIONFILE:");
+ MDTrace.WriteLine(LogLevel.DEBUG," RUNBACKTEST /STARTDATE: /MAXPOSITIONS: /INITIALCASH: /HOLDINGPERIOD: /{ENDDATE}: /{SESSIONFILE}:");
MDTrace.WriteLine(LogLevel.DEBUG,"********** M G S H M O M E N T U M *********");
MDTrace.WriteLine(LogLevel.DEBUG," MGSHSESSION /SESSIONFILE:");
MDTrace.WriteLine(LogLevel.DEBUG," MGSHRUNBACKTEST /USEHEDGING: /HEDGEINITIALCASH: /USESTOPLIMITS: /KEEPSLOTPOSITIONS: /STARTDATE: /MAXPOSITIONS: /INITIALCASH: /HOLDINGPERIOD: /{ENDDATE}: /SESSIONFILE: ");
@@ -1730,97 +1730,27 @@ namespace MarketData
else if (arg.Equals("RUNMOMENTUM"))
{
CommandArgs commandArgs = new CommandArgs(args);
- if (!commandArgs.Has("STARTDATE,MAXPOSITIONS")) return 0;
- Program.RunMomentum(commandArgs.Coalesce("STARTDATE"), commandArgs.Coalesce("MAXPOSITIONS"));
+ MGMomentumHelper.RunMomentum(commandArgs);
}
else if (arg.Equals("RUNBACKTEST"))
{
CommandArgs commandArgs = new CommandArgs(args);
- MGConfiguration mgParams=new MGConfiguration();
- 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 0;
- }
- mgParams.MaxPositions=commandArgs.Coalesce("MAXPOSITIONS");
- mgParams.InitialCash=commandArgs.Coalesce("INITIALCASH");
- mgParams.HoldingPeriod=commandArgs.Coalesce("HOLDINGPERIOD");
-
- if(commandArgs.Has("INCLUDETRADEMASTERFORSYMBOLSHELD"))
- {
- mgParams.IncludeTradeMasterForSymbolsHeld=commandArgs.Get("INCLUDETRADEMASTERFORSYMBOLSHELD");
- }
-
- if(commandArgs.Has("USESTOCHASTICS"))
- {
- mgParams.UseStochastics=commandArgs.Coalesce("USESTOCHASTICS",true);
- }
-
-// ** M A C D
- if(commandArgs.Has("USEMACD"))
- {
- mgParams.UseMACD=commandArgs.Coalesce("USEMACD",true);
- }
- if(commandArgs.Has("MACDREJECTSTRONGSELLSIGNALS"))
- {
- mgParams.MACDRejectStrongSellSignals=commandArgs.Coalesce("MACDREJECTSTRONGSELLSIGNALS",true);
- }
- if(commandArgs.Has("MACDREJECTWEAKSELLSIGNALS"))
- {
- mgParams.MACDRejectWeakSellSignals=commandArgs.Coalesce("MACDREJECTWEAKSELLSIGNALS",true);
- }
- if(commandArgs.Has("MACDSIGNALDAYS"))
- {
- mgParams.MACDSignalDays=commandArgs.Coalesce("MACDSIGNALDAYS",mgParams.MACDSignalDays);
- }
- if(commandArgs.Has("MACDSETUP"))
- {
- mgParams.MACDSetup=commandArgs.Coalesce("MACDSETUP",mgParams.MACDSetup);
- }
-// **
- QualityIndicator qualityIndicator=new QualityIndicator(QualityIndicator.QualityType.IDIndicator);
- if(commandArgs.Has("QUALITYINDICATORTYPE")) qualityIndicator.Quality=QualityIndicator.ToQuality(commandArgs.Coalesce("QUALITYINDICATORTYPE","IDINDICATOR"));
- mgParams.QualityIndicatorType=qualityIndicator.ToString();
-
- mgParams.UseLowSlopeBetaCheck=true;
- if(commandArgs.Has("USELOWSLOPEBETACHECK")) mgParams.UseLowSlopeBetaCheck=commandArgs.Coalesce("USELOWSLOPEBETACHECK",true);
-
- DateTime startDate = commandArgs.Coalesce("STARTDATE");
- DateTime endDate=commandArgs.Coalesce("ENDDATE",new DateTime());
-
- String pathSessionFileName = commandArgs.Coalesce("SESSIONFILE", null);
- if(null!=pathSessionFileName)pathSessionFileName=pathSessionFileName.Trim();
-
- mgParams.DisplayHeader();
- List results=new List();
- MomentumBacktest backtestMomentum=new MomentumBacktest();
- results.Add(backtestMomentum.PerformBacktest(startDate,endDate,pathSessionFileName,mgParams));
+ MGMomentumHelper.RunBacktest(commandArgs);
}
else if (arg.Equals("MGSESSION"))
{
CommandArgs commandArgs = new CommandArgs(args);
- if(!commandArgs.Has("SESSIONFILE")) { MDTrace.WriteLine(LogLevel.DEBUG,"Missing SESSIONFILE"); return 0; }
- MomentumBacktest momentumBacktest = new MomentumBacktest();
- momentumBacktest.DisplaySession(commandArgs.Coalesce("SESSIONFILE"));
+ MGMomentumHelper.RunMGSession(commandArgs);
}
else if(arg.Equals("MGGAINLOSS"))
{
CommandArgs commandArgs = new CommandArgs(args);
- if(!commandArgs.Has("SESSIONFILE")) { MDTrace.WriteLine(LogLevel.DEBUG,"Missing SESSIONFILE"); return 0; }
- MomentumBacktest momentumBacktest = new MomentumBacktest();
- MomentumBacktest.DisplayGainLoss(commandArgs.Coalesce("SESSIONFILE"));
+ MGMomentumHelper.RunMGGainLoss(commandArgs);
}
else if (arg.Equals("MGLIQUIDATE"))
{
- DateTime? tradeDate = null;
CommandArgs commandArgs = new CommandArgs(args);
- if (!commandArgs.Has("SESSIONFILE")) return 0;
- if (commandArgs.Has("TRADEDATE")) tradeDate = commandArgs.Coalesce("TRADEDATE");
- MomentumBacktest momentumBacktest = new MomentumBacktest();
- momentumBacktest.MGLiquididate(commandArgs.Coalesce("SESSIONFILE"), tradeDate);
+ MGMomentumHelper.RunMGLiquidate(commandArgs);
}
// *************************************************************************************************************************************************************************************************************************
// ************************************************************************************************** C M M O M E N T U M *************************************************************************************************
@@ -4186,16 +4116,5 @@ namespace MarketData
Console.WriteLine(String.Format("Strongest Positive:{0},{1}",items[items.Count-2].Symbol,items[items.Count-2].Coefficient));
Console.WriteLine(String.Format("Strongest Positive:{0},{1}",items[items.Count-1].Symbol,items[items.Count-1].Coefficient));
}
- public static void RunMomentum(DateTime analysisDate,int maxPositions)
- {
- MGConfiguration config=new MGConfiguration();
- MomentumCandidates momentumCandidates=MomentumGenerator.GenerateMomentum(analysisDate,config);
- MDTrace.WriteLine(LogLevel.DEBUG,String.Format("{0}",MomentumCandidate.Header()));
- for(int index=0;index