From 1f7aec239135c424f56bc977082c0dc25b0acd4d Mon Sep 17 00:00:00 2001 From: Sean Date: Thu, 20 Feb 2025 10:34:59 -0500 Subject: [PATCH] 50 day moving average must remain above 200 day moving average in order for candidate to be selected. --- .../Generator/CMTrend/CMTTrendModel..cs | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/MarketDataLib/Generator/CMTrend/CMTTrendModel..cs b/MarketDataLib/Generator/CMTrend/CMTTrendModel..cs index a02a1d3..e75196d 100644 --- a/MarketDataLib/Generator/CMTrend/CMTTrendModel..cs +++ b/MarketDataLib/Generator/CMTrend/CMTTrendModel..cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Text; -using System.Windows; using MarketData.MarketDataModel; using MarketData.DataAccess; using MarketData.Utils; @@ -386,7 +385,7 @@ namespace MarketData.Generator.CMTrend } // DMA50 check : The 50 day moving average must remain above the 200 day moving average Prices prices50=GBPriceCache.GetInstance().GetPrices(symbol,analysisDate,MovingAverageGenerator.DayCount50+10); - if(null==prices50||prices50.Count("MULTIPLIER"); - -// volatility=VolatilityGenerator.CalculateVolatility(position.Symbol,tradeDate,Parameters.StopLimitScalingVolatilityDays); -// unadjustedStop=currentPrice.Low-volatility; - volatility=VolatilityGenerator.CalculateVolatility(position.Symbol,tradeDate,Parameters.StopLimitScalingVolatilityDays,multiplier); -// adjustedStop=currentPrice.Low-volatility; - MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Using profit maximization strategy for {0} which has RMultiple={1}. Multiplier:{2}",position.Symbol,position.RMultiple,Utility.FormatNumber(multiplier,3))); } else { + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Using standard ATR multiplier for {0} which has RMultiple={1}.",position.Symbol,position.RMultiple)); volatility=VolatilityGenerator.CalculateVolatility(position.Symbol,tradeDate,Parameters.StopLimitScalingVolatilityDays); } -// double stopLimit=stopLimitNonScaled; if(double.IsNaN(volatility)) { MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Unable to calculate StopLimit for AverageTrueRange for {0} on {1}. Using non-scaled stop limit.",position.Symbol,tradeDate.ToShortDateString()));