From 93c0642336b5101184000d6f362cd67364afd175 Mon Sep 17 00:00:00 2001 From: Sean Date: Thu, 10 Apr 2025 19:15:21 -0400 Subject: [PATCH] Code cleanup and optimization of CMTModel, code cleanup MGSH, added ConsoleColor to MDTrace. --- .../Generator/CMTrend/CMTCandidateGenerator.cs | 11 ++++++++--- .../Generator/CMTrend/CMTSessionManager.cs | 5 +---- .../Generator/CMTrend/CMTTrendGenerator.cs | 2 ++ .../Generator/MGSHMomentum/MGSHBacktest.cs | 16 ++++++++++++---- MarketDataLib/Generator/RSIGenerator.cs | 9 +++++++-- MarketDataLib/MDTrace.cs | 14 ++++++++++++++ Program.cs | 2 -- 7 files changed, 44 insertions(+), 15 deletions(-) diff --git a/MarketDataLib/Generator/CMTrend/CMTCandidateGenerator.cs b/MarketDataLib/Generator/CMTrend/CMTCandidateGenerator.cs index 804398d..5b1c8dd 100644 --- a/MarketDataLib/Generator/CMTrend/CMTCandidateGenerator.cs +++ b/MarketDataLib/Generator/CMTrend/CMTCandidateGenerator.cs @@ -95,7 +95,7 @@ namespace MarketData.Generator.CMTrend } // Current Price Check Price currentPrice=prices[0]; - if(currentPrice.Date!=tradeDate) + if(currentPrice.Date.Date!=tradeDate.Date) { cmtCandidate.Violation=true; cmtCandidate.Symbol=symbol; @@ -203,8 +203,13 @@ namespace MarketData.Generator.CMTrend // Trend #8 check. Evaluate the RSI // generate a 14 day standard RSI with 30 days of pricing data - RSICollection rsiCollection=RSIGenerator.GenerateRSI(symbol,currentPrice.Date,30); - if(null==rsiCollection||0==rsiCollection.Count||rsiCollection[rsiCollection.Count-1].RSI symbols=PricingDA.GetSymbols(); + Dictionary latestDates = PricingDA.GetLatestDates(symbols); + symbols=symbols.Where(x => latestDates.ContainsKey(x) && latestDates[x].Date>=tradeDate.Date).ToList(); for(int index=0;index positions=ActivePositions[slotIndex]; if(null==positions||0==positions.Count)continue; - exposure+=(from Position position in positions select position.Exposure).Sum(); - marketValue+=(from Position position in positions select position.MarketValue).Sum(); + exposure+=(from MGSHPosition position in positions select position.Exposure).Sum(); + marketValue+=(from MGSHPosition position in positions select position.MarketValue).Sum(); } gainLoss.Exposure=exposure; gainLoss.MarketValue=marketValue; diff --git a/MarketDataLib/Generator/RSIGenerator.cs b/MarketDataLib/Generator/RSIGenerator.cs index 5637b17..5531769 100644 --- a/MarketDataLib/Generator/RSIGenerator.cs +++ b/MarketDataLib/Generator/RSIGenerator.cs @@ -66,13 +66,19 @@ namespace MarketData.Generator } rsiCollection=new RSICollection(rsiCollection.Skip(rsiDayCount).ToList()); return rsiCollection; -// return rsiCollection; } + public static RSICollection GenerateRSI(String symbol,DateTime analysisDate,int priceCount,int rsiDayCount=14) { if(priceCount=0;index--) { @@ -119,7 +125,6 @@ namespace MarketData.Generator } rsiCollection=new RSICollection(rsiCollection.Skip(rsiDayCount).ToList()); return rsiCollection; -// return rsiCollection; } } } diff --git a/MarketDataLib/MDTrace.cs b/MarketDataLib/MDTrace.cs index 190e3e3..2939c6e 100644 --- a/MarketDataLib/MDTrace.cs +++ b/MarketDataLib/MDTrace.cs @@ -80,6 +80,20 @@ namespace MarketData Console.WriteLine(message); Flush(); } + +/// WriteLine - Writes a line of text to trace log. +/// string content of message to write. +/// void + public static void WriteLine(LogLevel logLevel,ConsoleColor consoleColor,string message) + { + if(MDTrace.logLevelIndent - set trace log indentation. /// void // [Conditional("TRACE")] diff --git a/Program.cs b/Program.cs index 0fa7d23..39f2007 100644 --- a/Program.cs +++ b/Program.cs @@ -1030,8 +1030,6 @@ namespace MarketData Trace.Listeners.Add(new TextWriterTraceListener(strLogFile)); DateTime currentDate=DateTime.Now; - Environment.OSVersion.VersionString; - // CheckPricesForHoldings(); // Price price = MarketDataHelper.GetLatestPriceBigCharts("NVDA");