diff --git a/ViewModels/MGSHMomentumViewModel.cs b/ViewModels/MGSHMomentumViewModel.cs index 70615cb..3839811 100644 --- a/ViewModels/MGSHMomentumViewModel.cs +++ b/ViewModels/MGSHMomentumViewModel.cs @@ -79,6 +79,7 @@ namespace TradeBlotter.ViewModels private RelayCommand relativeStrengthCommandPosition; private RelayCommand macdCommandPosition; private RelayCommand bollingerBandCommandPosition; + private RelayCommand bollingerBandCommandPositionAll; private RelayCommand priceHistoryCommandPosition; private RelayCommand stickerValuationCommandPosition; private RelayCommand dcfValuationCommandPosition; @@ -212,7 +213,8 @@ namespace TradeBlotter.ViewModels get { ObservableCollection collection = new ObservableCollection(); - collection.Add(new MenuItem() { Text = "Display Bollinger Band", MenuItemClickedCommand = DisplayBollingerBandPosition, StaysOpenOnClick = false }); + collection.Add(new MenuItem() { Text = "Display Bollinger Band Model Position", MenuItemClickedCommand = DisplayBollingerBandPosition, StaysOpenOnClick = false }); + collection.Add(new MenuItem() { Text = "Display Bollinger Band All", MenuItemClickedCommand = DisplayBollingerBandPositionAll, StaysOpenOnClick = false }); collection.Add(new MenuItem() { Text = "Display Headlines", MenuItemClickedCommand = DisplayHeadlinesPosition, StaysOpenOnClick = false }); collection.Add(new MenuItem() { Text = "Display Dividend History", MenuItemClickedCommand = DisplayDividendHistoryPosition, StaysOpenOnClick = false }); collection.Add(new MenuItem() { Text = "Display Sticker Valuation", MenuItemClickedCommand = DisplayStickerValuationPosition, StaysOpenOnClick = false }); @@ -878,6 +880,18 @@ namespace TradeBlotter.ViewModels } } + public ICommand DisplayBollingerBandPositionAll + { + get + { + if (bollingerBandCommandPositionAll == null) + { + bollingerBandCommandPositionAll = new RelayCommand(param => this.DisplayBollingerBandCommandPositionAll(), param => { return null != selectedPosition && null != selectedPosition.Symbol; }); + } + return bollingerBandCommandPositionAll; + } + } + public ICommand AddToWatchListPosition { get @@ -1113,14 +1127,36 @@ namespace TradeBlotter.ViewModels WorkspaceInstantiator.Invoke(saveParams); } - private int GetDayCountSelectionForBollingerBands(MGSHPositionModel selectedPosition) + public void DisplayBollingerBandCommandPositionAll() + { + MarketData.MarketDataModel.StopLimits stopLimits = GetHistoricalStopLimitsMarketDataModel(); + + StringBuilder sb = new StringBuilder(); + SaveParameters saveParams = null; + sb = new StringBuilder(); + sb.Append("Type,TradeBlotter.ViewModels.BollingerBandViewModel,SelectedSymbol,"); + sb.Append(selectedPosition.Symbol).Append(","); + sb.Append("SelectedWatchList,{All},SelectedDayCount,"); + sb.Append(GetDayCountSelectionForBollingerBands(selectedPosition, true)); + saveParams = SaveParameters.Parse(sb.ToString()); + SaveParameters stopLimitParams = StopLimitsExtensions.FromStopLimits(stopLimits); + saveParams.AddRange(stopLimitParams); + saveParams.Referer=this; + WorkspaceInstantiator.Invoke(saveParams); + } + + private int GetDayCountSelectionForBollingerBands(MGSHPositionModel selectedPosition,bool ignoreActivePosition=false) { DateGenerator dateGenerator=new DateGenerator(); + DateTime maxDate = DateTime.Today; - DateTime maxDate = PricingDA.GetLatestDate(selectedPosition.Symbol); - if(!selectedPosition.IsActivePosition) + if(!ignoreActivePosition) { - maxDate = selectedPosition.SellDate; + maxDate = PricingDA.GetLatestDate(selectedPosition.Symbol); + if(!selectedPosition.IsActivePosition) + { + maxDate = selectedPosition.SellDate; + } } int daysBetween=dateGenerator.DaysBetween(selectedPosition.PurchaseDate, maxDate); if(daysBetween<90)return 90;