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