Include the new and the legacy bollinger bands.

This commit is contained in:
2025-02-20 10:36:47 -05:00
parent 3f73fcb7a0
commit d60b32e51d

View File

@@ -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<MenuItem> collection = new ObservableCollection<MenuItem>();
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;