From 508c0bee20b0c5228a3dfaf45ae3d643b8ea43ee Mon Sep 17 00:00:00 2001 From: Sean Date: Mon, 3 Mar 2025 19:42:57 -0500 Subject: [PATCH] Add PriceLow to MSHMomentumViewModel. Fix bug in CM EDit Position. --- Model/CMTPositionModel.cs | 10 ++++++++-- Model/MGSHPositionModel.cs | 21 +++++++++++++++++++-- ViewModels/CMMomentumViewModel.cs | 2 +- ViewModels/MGSHMomentumViewModel.cs | 1 + 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/Model/CMTPositionModel.cs b/Model/CMTPositionModel.cs index 0eaf424..31ace53 100644 --- a/Model/CMTPositionModel.cs +++ b/Model/CMTPositionModel.cs @@ -289,9 +289,15 @@ namespace TradeBlotter.Model get { if(!IsActivePosition) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Blue); + if(currentPriceLow<=position.TrailingStopLimit) + { + return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red); + } StopLimit stopLimit=PortfolioDA.GetStopLimit(position.Symbol); - if(null==stopLimit||!stopLimit.StopPrice.Equals(Math.Round(position.TrailingStopLimit,2))) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple); - if(currentPriceLow<=position.TrailingStopLimit)return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red); + if(null==stopLimit || !stopLimit.StopPrice.Equals(Math.Round(position.TrailingStopLimit,2))) + { + return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple); + } return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black); } } diff --git a/Model/MGSHPositionModel.cs b/Model/MGSHPositionModel.cs index 8f58b1d..6b04d7f 100644 --- a/Model/MGSHPositionModel.cs +++ b/Model/MGSHPositionModel.cs @@ -139,6 +139,20 @@ namespace TradeBlotter.Model } } + public double CurrentPriceLow + { + get{return currentPriceLow;} + set + { + if(currentPriceLow==value)return; + currentPriceLow=value; + base.OnPropertyChanged("CurrentPriceLow"); + base.OnPropertyChanged("CurrentPriceLowAsString"); + base.OnPropertyChanged("TrailingStopLimitColor"); + base.OnPropertyChanged("InitialStopLimitColor"); + } + } + private void UpdateProperties() { base.OnPropertyChanged("CurrentPrice"); @@ -559,9 +573,12 @@ namespace TradeBlotter.Model get { if(!IsActivePosition) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Blue); + if(currentPriceLow <= position.TrailingStopLimit) + { + return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red); + } StopLimit stopLimit=PortfolioDA.GetStopLimit(position.Symbol); - if(null==stopLimit||!stopLimit.StopPrice.Equals(Math.Round(position.TrailingStopLimit,2))) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple); - if(currentPriceLow<=position.TrailingStopLimit)return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red); + if(null==stopLimit || !stopLimit.StopPrice.Equals(Math.Round(position.TrailingStopLimit,2))) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple); return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black); } } diff --git a/ViewModels/CMMomentumViewModel.cs b/ViewModels/CMMomentumViewModel.cs index b5f8f4c..d4ae50b 100644 --- a/ViewModels/CMMomentumViewModel.cs +++ b/ViewModels/CMMomentumViewModel.cs @@ -1063,7 +1063,7 @@ namespace TradeBlotter.ViewModels MessageBox.Show("Failed to close the position, check log for details.", "Close Position"); return; } - String strMessage = String.Format("Closed position for {0}, Purchase Date:{1}, Sell Date{2}, Current Price:{3}. Saved to {4}. A backup was created.", + String strMessage = String.Format("Closed position for {0}, Sell Date{1}, Current Price:{2}. Saved to {3}. A backup was created.", changedPosition.Symbol, changedPosition.SellDate.ToShortDateString(), Utility.FormatCurrency(changedPosition.CurrentPrice), diff --git a/ViewModels/MGSHMomentumViewModel.cs b/ViewModels/MGSHMomentumViewModel.cs index 95e6978..3443a8a 100644 --- a/ViewModels/MGSHMomentumViewModel.cs +++ b/ViewModels/MGSHMomentumViewModel.cs @@ -1300,6 +1300,7 @@ namespace TradeBlotter.ViewModels Price price=PricingDA.GetPrice(symbol); if(null==price)continue; selectedPosition.CurrentPrice=price.Close; + selectedPosition.CurrentPriceLow=price.Low; selectedPosition.Volume=price.Volume; selectedPosition.LastUpdated=price.Date.Date