Fix the LoadSessionFile method so that the BusyIndicator is displayed with the correct content.

This commit is contained in:
2025-02-18 19:09:20 -05:00
parent f0b765c5c8
commit 6fcb5f63ba
3 changed files with 149 additions and 93 deletions

View File

@@ -28,6 +28,7 @@ using Position = MarketData.Generator.CMMomentum.Position;
using TradeBlotter.UIUtils;
using MarketData.Generator.Model;
using MarketData.CNNProcessing;
using System.Runtime.InteropServices.WindowsRuntime;
namespace TradeBlotter.ViewModels
{
@@ -1120,39 +1121,60 @@ namespace TradeBlotter.ViewModels
return;
}
}
public bool LoadSessionFile()
{
if (!CMSessionManager.IsValidSessionFile(pathFileName)) return false;
initialPath = Path.GetDirectoryName(pathFileName);
sessionParams=CMSessionManager.RestoreSession(pathFileName);
if (null == sessionParams) { MessageBox.Show(String.Format("Unable to open {0}", pathFileName)); pathFileName = null; return false; }
modelStatistics=CMMomentumBacktest.GetModelStatistics(sessionParams);
modelPerformanceSeries=CMMomentumBacktest.GetModelPerformance(sessionParams);
cmParams = sessionParams.CMParams;
NVPCollection nvpCollection = sessionParams.CMParams.ToNVPCollection();
nvpDictionary = nvpCollection.ToDictionary();
nvpDictionaryKeys = new ObservableCollection<String>(nvpDictionary.Keys);
selectedParameter = nvpDictionaryKeys[0];
positions = new CMPositionModelCollection();
positions.Add(sessionParams.ActivePositions);
positions.Add(sessionParams.AllPositions);
UpdatePositionPrices(false);
UpdatePositionRSI3(true);
RunPerformance();
base.OnPropertyChanged("Parameters");
base.OnPropertyChanged("SelectedParameter");
base.OnPropertyChanged("ParameterValue");
base.OnPropertyChanged("Title");
base.OnPropertyChanged("DisplayName");
base.OnPropertyChanged("AllPositions");
base.OnPropertyChanged("CanMonitor");
base.OnPropertyChanged("CashBalance");
base.OnPropertyChanged("NonTradeableCash");
base.OnPropertyChanged("ModelExpectation");
base.OnPropertyChanged("ExpectationColor");
base.OnPropertyChanged("ExpectationDescription");
BusyIndicator = true;
BusyContent = $"Loading {Utility.GetFileNameNoExtension(pathFileName)}...";
Task workerTask = Task.Factory.StartNew(() =>
{
try
{
if (!CMSessionManager.IsValidSessionFile(pathFileName)) return false;
initialPath = Path.GetDirectoryName(pathFileName);
sessionParams=CMSessionManager.RestoreSession(pathFileName);
if (null == sessionParams) { MessageBox.Show(String.Format("Unable to open {0}", pathFileName)); pathFileName = null; return false; }
modelStatistics=CMMomentumBacktest.GetModelStatistics(sessionParams);
modelPerformanceSeries=CMMomentumBacktest.GetModelPerformance(sessionParams);
cmParams = sessionParams.CMParams;
NVPCollection nvpCollection = sessionParams.CMParams.ToNVPCollection();
nvpDictionary = nvpCollection.ToDictionary();
nvpDictionaryKeys = new ObservableCollection<String>(nvpDictionary.Keys);
selectedParameter = nvpDictionaryKeys[0];
positions = new CMPositionModelCollection();
positions.Add(sessionParams.ActivePositions);
positions.Add(sessionParams.AllPositions);
UpdatePositionPrices(false);
UpdatePositionRSI3(true);
RunPerformance();
return true;
}
catch(Exception exception)
{
System.Windows.MessageBox.Show(String.Format("Exception {0}",exception.ToString()),"Error",MessageBoxButton.OK,MessageBoxImage.Exclamation);
return false;
}
});
workerTask.ContinueWith(continuation =>
{
BusyIndicator=false;
base.OnPropertyChanged("Parameters");
base.OnPropertyChanged("SelectedParameter");
base.OnPropertyChanged("ParameterValue");
base.OnPropertyChanged("Title");
base.OnPropertyChanged("DisplayName");
base.OnPropertyChanged("AllPositions");
base.OnPropertyChanged("CanMonitor");
base.OnPropertyChanged("CashBalance");
base.OnPropertyChanged("NonTradeableCash");
base.OnPropertyChanged("ModelExpectation");
base.OnPropertyChanged("ExpectationColor");
base.OnPropertyChanged("ExpectationDescription");
});
return true;
}
private void RunPerformance()
{
if(null==sessionParams)return;