Implement new bollinger band for model position.
This commit is contained in:
@@ -82,6 +82,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;
|
||||
@@ -202,7 +203,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 });
|
||||
@@ -802,6 +804,17 @@ namespace TradeBlotter.ViewModels
|
||||
return bollingerBandCommandPosition;
|
||||
}
|
||||
}
|
||||
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
|
||||
@@ -952,43 +965,9 @@ namespace TradeBlotter.ViewModels
|
||||
// *************************************************************************************************************************************************************
|
||||
// ********************************************************************** C O M M A N D W O R K E R S P O S I T I O N ****************************************
|
||||
// *************************************************************************************************************************************************************
|
||||
//public void DisplayBollingerBandCommandPosition()
|
||||
//{
|
||||
// String strStopLimits=null;
|
||||
// MarketData.MarketDataModel.StopLimits stopLimits=GetHistoricalStopLimitsMarketDataModel();
|
||||
// StringBuilder sb=new StringBuilder();
|
||||
// if(null!=stopLimits && 0!=stopLimits.Count)
|
||||
// {
|
||||
// sb.Append(",");
|
||||
// NVPCollections nvpCollections=stopLimits.ToNVPCollections();
|
||||
// sb.Append("StopHistoryCount").Append(",").Append(String.Format("{0}",nvpCollections.Count)).Append(",");
|
||||
// for(int index=0;index<nvpCollections.Count;index++)
|
||||
// {
|
||||
// sb.Append(String.Format("StopHistory_{0}",index)).Append(",").Append(nvpCollections[index].ToString());
|
||||
// if(index<nvpCollections.Count-1)sb.Append(",");
|
||||
// }
|
||||
// }
|
||||
// strStopLimits=sb.ToString();
|
||||
// SaveParameters saveParams=null;
|
||||
// if(null!=strStopLimits)
|
||||
// {
|
||||
// sb=new StringBuilder();
|
||||
// sb.Append("Type,TradeBlotter.ViewModels.BollingerBandViewModel,SelectedSymbol,");
|
||||
// sb.Append(selectedPosition.Symbol).Append(",");
|
||||
// sb.Append("SelectedWatchList,{All},SelectedDayCount,");
|
||||
// sb.Append(GetDayCountSelectionForBollingerBands(selectedPosition));
|
||||
// sb.Append(String.IsNullOrEmpty(strStopLimits)?"":strStopLimits);
|
||||
// saveParams=SaveParameters.Parse(sb.ToString());
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// saveParams=SaveParameters.Parse("Type,TradeBlotter.ViewModels.BollingerBandViewModel,SelectedSymbol,"+selectedPosition.Symbol+",SelectedWatchList,{All},SelectedDayCount,90");
|
||||
// }
|
||||
// saveParams.Referer=this;
|
||||
// WorkspaceInstantiator.Invoke(saveParams);
|
||||
//}
|
||||
|
||||
public void DisplayBollingerBandCommandPosition()
|
||||
// Legacy bollinger band
|
||||
public void DisplayBollingerBandCommandPositionAll()
|
||||
{
|
||||
MarketData.MarketDataModel.StopLimits stopLimits = GetHistoricalStopLimitsMarketDataModel();
|
||||
|
||||
@@ -1002,10 +981,32 @@ namespace TradeBlotter.ViewModels
|
||||
saveParams = SaveParameters.Parse(sb.ToString());
|
||||
SaveParameters stopLimitParams = StopLimitsExtensions.FromStopLimits(stopLimits);
|
||||
saveParams.AddRange(stopLimitParams);
|
||||
saveParams.Referer = this;
|
||||
WorkspaceInstantiator.Invoke(saveParams);
|
||||
}
|
||||
// Bollinger band for this position
|
||||
public void DisplayBollingerBandCommandPosition()
|
||||
{
|
||||
MarketData.MarketDataModel.StopLimits stopLimits = GetHistoricalStopLimitsMarketDataModel();
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
SaveParameters saveParams = null;
|
||||
sb = new StringBuilder();
|
||||
sb.Append("Type,TradeBlotter.ViewModels.BollingerBandPositionViewModel,SelectedSymbol,");
|
||||
sb.Append(selectedPosition.Symbol).Append(",");
|
||||
sb.Append("SelectedWatchList,{All},SelectedDayCount,");
|
||||
sb.Append(GetDayCountSelectionForBollingerBands(selectedPosition));
|
||||
saveParams = SaveParameters.Parse(sb.ToString());
|
||||
SaveParameters stopLimitParams = StopLimitsExtensions.FromStopLimits(stopLimits);
|
||||
saveParams.AddRange(stopLimitParams);
|
||||
SaveParameters portfolioTradesParams = PortfolioTradesExtensions.FromPosition(selectedPosition);
|
||||
saveParams.AddRange(portfolioTradesParams);
|
||||
saveParams.Referer=this;
|
||||
WorkspaceInstantiator.Invoke(saveParams);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private int GetDayCountSelectionForBollingerBands(CMTPositionModel selectedPosition)
|
||||
{
|
||||
DateGenerator dateGenerator=new DateGenerator();
|
||||
@@ -1561,18 +1562,31 @@ namespace TradeBlotter.ViewModels
|
||||
if(null==sessionParams||null==selectedPosition) return null;
|
||||
DateGenerator dateGenerator=new DateGenerator();
|
||||
MarketData.MarketDataModel.StopLimits marketDataModelStopLimits=new MarketData.MarketDataModel.StopLimits();
|
||||
MarketData.Generator.Model.StopLimits stopLimits=new MarketData.Generator.Model.StopLimits(
|
||||
(from MarketData.Generator.Model.StopLimit stopLimit in sessionParams.StopLimits where stopLimit.Symbol.Equals(selectedPosition.Symbol)
|
||||
select stopLimit).OrderByDescending(x => x.AnalysisDate).ToList());
|
||||
|
||||
MarketData.Generator.Model.StopLimits stopLimits = default;
|
||||
if(selectedPosition.IsActivePosition)
|
||||
{
|
||||
stopLimits = new MarketData.Generator.Model.StopLimits(
|
||||
(from MarketData.Generator.Model.StopLimit stopLimit in sessionParams.StopLimits where stopLimit.Symbol.Equals(selectedPosition.Symbol) &&
|
||||
stopLimit.AnalysisDate > selectedPosition.PurchaseDate select stopLimit).OrderByDescending(x => x.AnalysisDate).ToList());
|
||||
}
|
||||
else
|
||||
{
|
||||
stopLimits = new MarketData.Generator.Model.StopLimits(
|
||||
(from MarketData.Generator.Model.StopLimit stopLimit in sessionParams.StopLimits where stopLimit.Symbol.Equals(selectedPosition.Symbol) &&
|
||||
stopLimit.AnalysisDate > selectedPosition.PurchaseDate && stopLimit.AnalysisDate <= selectedPosition.SellDate select stopLimit).
|
||||
OrderByDescending(x => x.AnalysisDate).ToList());
|
||||
}
|
||||
|
||||
MarketData.MarketDataModel.StopLimit initialStopLimit=new MarketData.MarketDataModel.StopLimit();
|
||||
initialStopLimit.Symbol=selectedPosition.Symbol;
|
||||
initialStopLimit.Shares=0;
|
||||
initialStopLimit.StopPrice=selectedPosition.InitialStopLimit;
|
||||
initialStopLimit.StopType=StopLimitConstants.STOP_QUOTE;
|
||||
initialStopLimit.EffectiveDate=dateGenerator.FindNextBusinessDay(selectedPosition.PurchaseDate);
|
||||
initialStopLimit.EffectiveDate=selectedPosition.PurchaseDate;
|
||||
initialStopLimit.Active=1;
|
||||
marketDataModelStopLimits.Add(initialStopLimit);
|
||||
|
||||
foreach(MarketData.Generator.Model.StopLimit stopLimit in stopLimits)
|
||||
{
|
||||
MarketData.MarketDataModel.StopLimit marketDataModelStopLimit=new MarketData.MarketDataModel.StopLimit();
|
||||
|
||||
Reference in New Issue
Block a user