From c4b00113178208a63f38e92f3d03a8f79b73c5a5 Mon Sep 17 00:00:00 2001 From: Sean Date: Mon, 20 Jan 2025 09:44:09 -0500 Subject: [PATCH] Fix potential issue when selecting the fallback candidate and share count is zero. --- MarketDataLib/Generator/Momentum/Backtest.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MarketDataLib/Generator/Momentum/Backtest.cs b/MarketDataLib/Generator/Momentum/Backtest.cs index 1a10feb..20425ae 100644 --- a/MarketDataLib/Generator/Momentum/Backtest.cs +++ b/MarketDataLib/Generator/Momentum/Backtest.cs @@ -393,12 +393,13 @@ namespace MarketData.Generator.Momentum Positions positions = null; positions=BuyPositions(TradeDate,AnalysisDate,CashBalance/((double)HoldingPeriod-(double)ActivePositions.Count),SymbolsHeld(TradeDate)); MDTrace.WriteLine(LogLevel.DEBUG, "******************** B U Y ********************"); - positions.Display(); if(CashBalance-positions.Exposure<0.00) { + positions.Clear(); MDTrace.WriteLine(LogLevel.DEBUG,String.Format("********** Insufficient funds to make additional purchases.**************")); - break; +// break; } + positions.Display(); ActivePositions.Add(slotIndex,positions); CashBalance-=positions.Exposure; DisplayBalance(); @@ -590,6 +591,7 @@ namespace MarketData.Generator.Momentum position.PurchasePrice = price.Close; position.CurrentPrice = price.Close; position.Shares = (int)Math.Floor(cash / position.PurchasePrice); + if(0 == position.Shares)return positions; positions.Add(position); } return positions;