Changes to support MGSHMomentumView

This commit is contained in:
2025-02-10 08:02:49 -05:00
parent 549f9ca7d1
commit 230d84904a
10 changed files with 324 additions and 436 deletions

View File

@@ -28,6 +28,8 @@ using StopLimit=MarketData.MarketDataModel.StopLimit;
using TradeBlotter.UIUtils;
using MarketData.Generator.Model;
using MarketData.Generator.ModelGenerators;
using MarketData.Generator.Interface;
using TradeBlotter.Extensions;
namespace TradeBlotter.ViewModels
{
@@ -950,41 +952,60 @@ 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()
{
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");
}
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));
saveParams = SaveParameters.Parse(sb.ToString());
SaveParameters stopLimitParams = StopLimitsExtensions.FromStopLimits(stopLimits);
saveParams.AddRange(stopLimitParams);
saveParams.Referer=this;
WorkspaceInstantiator.Invoke(saveParams);
}
private int GetDayCountSelectionForBollingerBands(CMTPositionModel selectedPosition)
{
DateGenerator dateGenerator=new DateGenerator();
@@ -1061,10 +1082,11 @@ namespace TradeBlotter.ViewModels
MessageBox.Show(strMessage,"Close Position");
LoadSessionFile();
}
public void EditPositionCommand(CMTPositionModel selectedPosition)
{
Position clonedPosition=Position.Clone(selectedPosition.Position);
Position changedPosition=CMTTrendModelEditPositionDialog.Prompt("Edit Position",clonedPosition);
IPosition changedPosition=EditPositionDialog.Prompt("Edit Position",clonedPosition);
if(null==changedPosition) return;
CMTTrendModel mmTrendModel=new CMTTrendModel();
if(!mmTrendModel.EditPosition(changedPosition.Symbol,changedPosition.PurchaseDate,changedPosition.PurchasePrice,changedPosition.InitialStopLimit,changedPosition.TrailingStopLimit,pathFileName))
@@ -1515,7 +1537,9 @@ 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=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.MarketDataModel.StopLimit initialStopLimit=new MarketData.MarketDataModel.StopLimit();
initialStopLimit.Symbol=selectedPosition.Symbol;