Add MGMomentumHelper
This commit is contained in:
@@ -74,6 +74,7 @@
|
||||
<Compile Include="CommandArgs.cs" />
|
||||
<Compile Include="ModelHelper\CMMomentumHelper.cs" />
|
||||
<Compile Include="ModelHelper\CMTrendHelper.cs" />
|
||||
<Compile Include="ModelHelper\MGMomentumHelper.cs" />
|
||||
<Compile Include="ModelHelper\MGSHMomentumHelper.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
||||
93
Program.cs
93
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<DateTime>("STARTDATE"), commandArgs.Coalesce<int>("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<int>("MAXPOSITIONS");
|
||||
mgParams.InitialCash=commandArgs.Coalesce<int>("INITIALCASH");
|
||||
mgParams.HoldingPeriod=commandArgs.Coalesce<int>("HOLDINGPERIOD");
|
||||
|
||||
if(commandArgs.Has("INCLUDETRADEMASTERFORSYMBOLSHELD"))
|
||||
{
|
||||
mgParams.IncludeTradeMasterForSymbolsHeld=commandArgs.Get<bool>("INCLUDETRADEMASTERFORSYMBOLSHELD");
|
||||
}
|
||||
|
||||
if(commandArgs.Has("USESTOCHASTICS"))
|
||||
{
|
||||
mgParams.UseStochastics=commandArgs.Coalesce<bool>("USESTOCHASTICS",true);
|
||||
}
|
||||
|
||||
// ** M A C D
|
||||
if(commandArgs.Has("USEMACD"))
|
||||
{
|
||||
mgParams.UseMACD=commandArgs.Coalesce<bool>("USEMACD",true);
|
||||
}
|
||||
if(commandArgs.Has("MACDREJECTSTRONGSELLSIGNALS"))
|
||||
{
|
||||
mgParams.MACDRejectStrongSellSignals=commandArgs.Coalesce<bool>("MACDREJECTSTRONGSELLSIGNALS",true);
|
||||
}
|
||||
if(commandArgs.Has("MACDREJECTWEAKSELLSIGNALS"))
|
||||
{
|
||||
mgParams.MACDRejectWeakSellSignals=commandArgs.Coalesce<bool>("MACDREJECTWEAKSELLSIGNALS",true);
|
||||
}
|
||||
if(commandArgs.Has("MACDSIGNALDAYS"))
|
||||
{
|
||||
mgParams.MACDSignalDays=commandArgs.Coalesce<int>("MACDSIGNALDAYS",mgParams.MACDSignalDays);
|
||||
}
|
||||
if(commandArgs.Has("MACDSETUP"))
|
||||
{
|
||||
mgParams.MACDSetup=commandArgs.Coalesce<String>("MACDSETUP",mgParams.MACDSetup);
|
||||
}
|
||||
// **
|
||||
QualityIndicator qualityIndicator=new QualityIndicator(QualityIndicator.QualityType.IDIndicator);
|
||||
if(commandArgs.Has("QUALITYINDICATORTYPE")) qualityIndicator.Quality=QualityIndicator.ToQuality(commandArgs.Coalesce<String>("QUALITYINDICATORTYPE","IDINDICATOR"));
|
||||
mgParams.QualityIndicatorType=qualityIndicator.ToString();
|
||||
|
||||
mgParams.UseLowSlopeBetaCheck=true;
|
||||
if(commandArgs.Has("USELOWSLOPEBETACHECK")) mgParams.UseLowSlopeBetaCheck=commandArgs.Coalesce<bool>("USELOWSLOPEBETACHECK",true);
|
||||
|
||||
DateTime startDate = commandArgs.Coalesce<DateTime>("STARTDATE");
|
||||
DateTime endDate=commandArgs.Coalesce<DateTime>("ENDDATE",new DateTime());
|
||||
|
||||
String pathSessionFileName = commandArgs.Coalesce<String>("SESSIONFILE", null);
|
||||
if(null!=pathSessionFileName)pathSessionFileName=pathSessionFileName.Trim();
|
||||
|
||||
mgParams.DisplayHeader();
|
||||
List<BacktestResult> results=new List<BacktestResult>();
|
||||
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<String>("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<String>("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<DateTime>("TRADEDATE");
|
||||
MomentumBacktest momentumBacktest = new MomentumBacktest();
|
||||
momentumBacktest.MGLiquididate(commandArgs.Coalesce<String>("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<momentumCandidates.Count;index++)
|
||||
{
|
||||
MomentumCandidate momentumCandidate=momentumCandidates[index];
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("{0}",momentumCandidate.ToString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user