From a510a637728b742ad5ff5d79fd8988e7d0711f0a Mon Sep 17 00:00:00 2001 From: Sean Date: Wed, 18 Feb 2026 18:57:00 -0500 Subject: [PATCH] Handle multiple stop limits in the stop limit table and display them properly. --- Model/GainLossModel.cs | 11 ----------- Model/StopLimitCompositeModel.cs | 2 +- ViewModels/BollingerBandViewModel.cs | 26 ++++---------------------- 3 files changed, 5 insertions(+), 34 deletions(-) diff --git a/Model/GainLossModel.cs b/Model/GainLossModel.cs index 53fef50..e5aae49 100644 --- a/Model/GainLossModel.cs +++ b/Model/GainLossModel.cs @@ -16,17 +16,6 @@ namespace TradeBlotter.Model { } - //public static CompositeDataSource CreateCompositeDataSource(DateTime xSource,double ySource) - //{ - // CompositeDataSource compositeDataSource; - // var xData=new EnumerableDataSource(new DateTime[] { xSource }); - // xData.SetXMapping(x => (x.Ticks/10000000000.0)); - // var yData=new EnumerableDataSource(new double[] { ySource }); - // yData.SetYMapping(y => y); - // compositeDataSource=xData.Join(yData); - // return compositeDataSource; - //} - public static CompositeDataSource Price(Price price) { if (null == price) return null; diff --git a/Model/StopLimitCompositeModel.cs b/Model/StopLimitCompositeModel.cs index 096b8b0..c910e0e 100644 --- a/Model/StopLimitCompositeModel.cs +++ b/Model/StopLimitCompositeModel.cs @@ -34,7 +34,7 @@ namespace TradeBlotter.Model List stopLimitDates = new List(); foreach(StopLimit stopLimit in stopLimits) { - stopLimitDates.Add(stopLimit.EffectiveDate); + stopLimitDates.Add(xSource); } var xData=new EnumerableDataSource(stopLimitDates.Select(x => x.Date)); xData.SetXMapping(x => (x.Ticks/10000000000.0)); diff --git a/ViewModels/BollingerBandViewModel.cs b/ViewModels/BollingerBandViewModel.cs index de7380f..c45d995 100644 --- a/ViewModels/BollingerBandViewModel.cs +++ b/ViewModels/BollingerBandViewModel.cs @@ -444,7 +444,7 @@ namespace TradeBlotter.ViewModels } else if(null!=internalStopLimits && null!=zeroPrice) { - compositeDataSourceStopLimit=StopLimitCompositeModel.CreateCompositeDataSource(zeroPrice.Date,stopLimits); + compositeDataSourceStopLimit=StopLimitCompositeModel.CreateCompositeDataSource(zeroPrice.Date,internalStopLimits); } compositeDataSourceInsiderTransactionPointDisposedSmall=InsiderTransactionModel.InsiderTransactionSummaries(new InsiderTransactionSummaries(disposedSummariesBin[2]),minClose); @@ -786,6 +786,7 @@ namespace TradeBlotter.ViewModels { if (null == zeroPrice) return null; if (null == internalStopLimits || null == zeroPrice || !showTradeLabels) return null; + Price latestPrice=prices[0]; for(int index=0;index0?"+":"").Append(Utility.FormatPercent(percentOffsetFromLow)).Append(")"); - } + double percentOffsetFromLow=((latestPrice.Low-limit.StopPrice)/limit.StopPrice); + sb.Append(" (").Append(percentOffsetFromLow>0?"+":"").Append(Utility.FormatPercent(percentOffsetFromLow)).Append(")"); centerTextMarker.Text=sb.ToString(); if(0==index&&internalStopLimits.Count>1) centerTextMarker.VerticalShift="25"; else centerTextMarker.VerticalShift="40"; centerTextMarker.HorizontalShift="32"; centeredTextMarkers.Add(centerTextMarker); } - - - - - //CenteredTextMarker centerTextMarker=new CenteredTextMarker(); - //Price latestPrice=prices[0]; - //double percentOffsetFromLow=((latestPrice.Low-stopLimit.StopPrice)/stopLimit.StopPrice); - //StringBuilder sb=new StringBuilder(); - //sb.Append(stopLimit.StopType).Append(" "); - //sb.Append(Utility.FormatCurrency(stopLimit.StopPrice)); - //sb.Append(" (").Append(percentOffsetFromLow>0?"+":"").Append(Utility.FormatPercent(percentOffsetFromLow)).Append(")"); - //centerTextMarker.Text=sb.ToString(); - //centeredTextMarkers.Add(centerTextMarker); - //centerTextMarker.VerticalShift="40"; - //centerTextMarker.HorizontalShift="32"; } return centeredTextMarkers.ToArray(); }