Commit Latest
This commit is contained in:
@@ -21,6 +21,7 @@ using MarketData.MarketDataModel;
|
|||||||
using MarketData.Utils;
|
using MarketData.Utils;
|
||||||
using PortfolioManager.DataSeriesViewModels;
|
using PortfolioManager.DataSeriesViewModels;
|
||||||
using PortfolioManager.Dialogs;
|
using PortfolioManager.Dialogs;
|
||||||
|
using PortfolioManager.Extensions;
|
||||||
using PortfolioManager.Models;
|
using PortfolioManager.Models;
|
||||||
using PortfolioManager.UIUtils;
|
using PortfolioManager.UIUtils;
|
||||||
using Position=MarketData.Generator.CMTrend.Position;
|
using Position=MarketData.Generator.CMTrend.Position;
|
||||||
@@ -347,14 +348,91 @@ namespace PortfolioManager.ViewModels
|
|||||||
}
|
}
|
||||||
|
|
||||||
// *********************************************************************************************************************************
|
// *********************************************************************************************************************************
|
||||||
|
// public async Task ExecuteBollingerBands()
|
||||||
|
// {
|
||||||
|
// SaveParameters saveParams = SaveParameters.Parse("Type,PortfolioManager.ViewModels.BollingerBandViewModel,SelectedSymbol," + selectedPosition.Symbol + ",SelectedWatchList,{All},SelectedDayCount,90");
|
||||||
|
// saveParams.Referer=this;
|
||||||
|
// WorkspaceInstantiator.Invoke(saveParams);
|
||||||
|
// await Task.FromResult(true);
|
||||||
|
// }
|
||||||
|
|
||||||
public async Task ExecuteBollingerBands()
|
public async Task ExecuteBollingerBands()
|
||||||
{
|
{
|
||||||
SaveParameters saveParams = SaveParameters.Parse("Type,PortfolioManager.ViewModels.BollingerBandViewModel,SelectedSymbol," + selectedPosition.Symbol + ",SelectedWatchList,{All},SelectedDayCount,90");
|
MarketData.MarketDataModel.StopLimits stopLimits = GetHistoricalStopLimitsMarketDataModel();
|
||||||
saveParams.Referer=this;
|
|
||||||
WorkspaceInstantiator.Invoke(saveParams);
|
StringBuilder sb = new StringBuilder();
|
||||||
|
SaveParameters saveParams = null;
|
||||||
|
sb = new StringBuilder();
|
||||||
|
sb.Append("Type,PortfolioManager.ViewModels.BollingerBandViewModel,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);
|
||||||
|
saveParams.Referer = this;
|
||||||
|
WorkspaceInstantiator.Invoke(saveParams);
|
||||||
await Task.FromResult(true);
|
await Task.FromResult(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int GetDayCountSelectionForBollingerBands(CMTPositionModel selectedPosition)
|
||||||
|
{
|
||||||
|
DateGenerator dateGenerator=new DateGenerator();
|
||||||
|
|
||||||
|
int daysBetween=dateGenerator.DaysBetween(selectedPosition.PurchaseDate,DateTime.Today);
|
||||||
|
if(daysBetween<90)return 90;
|
||||||
|
if(daysBetween<180)return 180;
|
||||||
|
if(daysBetween<360)return 360;
|
||||||
|
if(daysBetween<720)return 720;
|
||||||
|
if(daysBetween<1440)return 1440;
|
||||||
|
return 3600;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This getter returns non-model (MarketData.MarketDataModel) specific stop limits to pass along to the bollinger bands
|
||||||
|
public MarketData.MarketDataModel.StopLimits GetHistoricalStopLimitsMarketDataModel()
|
||||||
|
{
|
||||||
|
if(null==sessionParams||null==selectedPosition) return null;
|
||||||
|
DateGenerator dateGenerator=new DateGenerator();
|
||||||
|
MarketData.MarketDataModel.StopLimits marketDataModelStopLimits=new MarketData.MarketDataModel.StopLimits();
|
||||||
|
|
||||||
|
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=selectedPosition.PurchaseDate;
|
||||||
|
initialStopLimit.Active=1;
|
||||||
|
marketDataModelStopLimits.Add(initialStopLimit);
|
||||||
|
|
||||||
|
foreach(MarketData.Generator.Model.StopLimit stopLimit in stopLimits)
|
||||||
|
{
|
||||||
|
MarketData.MarketDataModel.StopLimit marketDataModelStopLimit=new MarketData.MarketDataModel.StopLimit();
|
||||||
|
marketDataModelStopLimit.Symbol=stopLimit.Symbol;
|
||||||
|
marketDataModelStopLimit.Shares=0;
|
||||||
|
marketDataModelStopLimit.StopPrice=stopLimit.NewStop;
|
||||||
|
marketDataModelStopLimit.StopType=StopLimitConstants.STOP_QUOTE;
|
||||||
|
marketDataModelStopLimit.EffectiveDate=stopLimit.AnalysisDate;
|
||||||
|
marketDataModelStopLimit.Active=1;
|
||||||
|
marketDataModelStopLimits.Add(marketDataModelStopLimit);
|
||||||
|
}
|
||||||
|
return marketDataModelStopLimits;
|
||||||
|
}
|
||||||
|
|
||||||
private void HandleToggleReturnOrPercent()
|
private void HandleToggleReturnOrPercent()
|
||||||
{
|
{
|
||||||
showAsGainLoss = !showAsGainLoss;
|
showAsGainLoss = !showAsGainLoss;
|
||||||
|
|||||||
@@ -178,14 +178,6 @@ namespace PortfolioManager.ViewModels
|
|||||||
await ReloadTradeFile();
|
await ReloadTradeFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
// public async Task ExecuteBollingerBands()
|
|
||||||
// {
|
|
||||||
// SaveParameters saveParams = SaveParameters.Parse("Type,PortfolioManager.ViewModels.BollingerBandViewModel,SelectedSymbol," + selectedPosition.Symbol + ",SelectedWatchList,{All},SelectedDayCount,90");
|
|
||||||
// saveParams.Referer=this;
|
|
||||||
// WorkspaceInstantiator.Invoke(saveParams);
|
|
||||||
// await Task.FromResult(true);
|
|
||||||
// }
|
|
||||||
|
|
||||||
public async Task ExecuteBollingerBands()
|
public async Task ExecuteBollingerBands()
|
||||||
{
|
{
|
||||||
MarketData.MarketDataModel.StopLimits stopLimits = GetHistoricalStopLimitsMarketDataModel();
|
MarketData.MarketDataModel.StopLimits stopLimits = GetHistoricalStopLimitsMarketDataModel();
|
||||||
|
|||||||
Reference in New Issue
Block a user