public PerformanceReportPageViewModel(IDBContext context, IDialogService dialogService, MainViewModel parent) : base(dialogService) { Context = context; Parent = parent; ReportSettings = new ReportSettings(); TradeFilterSettings = new TradeFilterSettings(Context); ToggleTagsText = "Select All"; ToggleStratsText = "Select All"; Strategies = new ObservableCollection <CheckListItem <Strategy> >(); Tags = new ObservableCollection <CheckListItem <Tag> >(); Benchmarks = new ObservableCollection <Benchmark>(); CreateCommands(); }
public PerformanceReportPageViewModel(IDBContext context, IDialogService dialogService, MainViewModel parent, IDataSourcer datasourcer) : base(dialogService) { Context = context; Parent = parent; Datasourcer = datasourcer; ReportSettings = new ReportSettings(); TradeFilterSettings = new TradeFilterSettings(Context); ToggleTagsText = "Select All"; ToggleStratsText = "Select All"; ToggleInstrumentsText = "Deselect All"; Strategies = new ObservableCollection <CheckListItem <Strategy> >(); Tags = new ObservableCollection <CheckListItem <Tag> >(); Instruments = new ObservableCollection <CheckListItem <Instrument> >(); Benchmarks = new ObservableCollection <Benchmark>(); BacktestSeries = new ObservableCollection <QDMS.Instrument>(); CreateCommands(); }
public static List<Trade> Filter(List<Tag> selectedTags, List<Strategy> selectedStrategies, List<Instrument> selectedInstruments, IDBContext context, TradeFilterSettings settings) { if (context == null) throw new ArgumentNullException("context"); //filter dates var trades = context .Trades .Include(x => x.Tags) .Include(x => x.Strategy) .Include(x => x.Orders) .Include(x => x.CashTransactions) .Where(x => x.DateClosed == null || x.DateClosed > settings.From) .Where(x => x.DateOpened < settings.To) .ToList(); //filter open if required if (settings.ClosedTradesOnly) { trades = trades.Where(x => !x.Open).ToList(); } //filter by strategy switch (settings.StrategyFilterMethod) { case FilterMethod.Any: trades = trades.Where(x => selectedStrategies.Contains(x.Strategy)).ToList(); break; case FilterMethod.Exclude: trades = trades.Where(x => !selectedStrategies.Contains(x.Strategy)).ToList(); break; } //filter by tags switch (settings.TagFilterMethod) { case FilterMethod.Any: trades = trades.Where(x => selectedTags.Intersect(x.Tags).Any()).ToList(); break; case FilterMethod.All: trades = trades.Where(x => selectedTags.Intersect(x.Tags).Count() == selectedTags.Count).ToList(); break; case FilterMethod.Exclude: trades = trades.Where(x => !selectedTags.Intersect(x.Tags).Any()).ToList(); break; } List<int> selectedInstrumentIDs = selectedInstruments.Select(x => x.ID).ToList(); //filter by instrument switch (settings.InstrumentFilterMethod) { case FilterMethod.Any: trades = trades.Where(x => x.Orders.Select(y => y.InstrumentID).Intersect(selectedInstrumentIDs).Any() || x.CashTransactions.Where(y => y.InstrumentID.HasValue).Select(y => y.InstrumentID.Value).Intersect(selectedInstrumentIDs).Any()) .ToList(); break; case FilterMethod.All: trades = trades.Where(x => x.Orders.Select(y => y.InstrumentID).Intersect(selectedInstrumentIDs).Union( x.CashTransactions.Where(y => y.InstrumentID.HasValue).Select(y => y.InstrumentID.Value)).Count() == selectedInstrumentIDs.Count) .ToList(); break; case FilterMethod.Exclude: trades = trades.Where(x => !x.Orders.Select(y => y.InstrumentID).Intersect(selectedInstrumentIDs).Any() && !x.CashTransactions.Where(y => y.InstrumentID.HasValue).Select(y => y.InstrumentID.Value).Intersect(selectedInstrumentIDs).Any()) .ToList(); break; } return trades.ToList(); }
public static List <Trade> Filter(List <Tag> selectedTags, List <Strategy> selectedStrategies, IDBContext context, TradeFilterSettings settings) { if (context == null) { throw new ArgumentNullException("context"); } //filter dates var trades = context .Trades .Include(x => x.Tags) .Include(x => x.Strategy) .Where(x => x.DateClosed == null || x.DateClosed > settings.From) .Where(x => x.DateOpened < settings.To) .ToList(); //filter open if required if (settings.ClosedTradesOnly) { trades = trades.Where(x => !x.Open).ToList(); } //filter by strategy switch (settings.StrategyFilterMethod) { case FilterMethod.Any: trades = trades.Where(x => selectedStrategies.Contains(x.Strategy)).ToList(); break; case FilterMethod.Exclude: trades = trades.Where(x => !selectedStrategies.Contains(x.Strategy)).ToList(); break; } //filter by tags switch (settings.TagFilterMethod) { case FilterMethod.Any: trades = trades.Where(x => selectedTags.Intersect(x.Tags).Any()).ToList(); break; case FilterMethod.All: trades = trades.Where(x => selectedTags.Intersect(x.Tags).Count() == selectedTags.Count).ToList(); break; case FilterMethod.Exclude: trades = trades.Where(x => !selectedTags.Intersect(x.Tags).Any()).ToList(); break; } return(trades.ToList()); }
public PerformanceReportPageViewModel(IDBContext context, IDialogCoordinator dialogService, MainViewModel parent, IDataSourcer datasourcer) : base(dialogService) { Context = context; Parent = parent; Datasourcer = datasourcer; ReportSettings = new ReportSettings(); TradeFilterSettings = new TradeFilterSettings(Context); ToggleTagsText = "Select All"; ToggleStratsText = "Select All"; ToggleInstrumentsText = "Deselect All"; Strategies = new ObservableCollection<CheckListItem<Strategy>>(); Tags = new ObservableCollection<CheckListItem<Tag>>(); Instruments = new ObservableCollection<CheckListItem<Instrument>>(); Benchmarks = new ObservableCollection<Benchmark>(); BacktestSeries = new ObservableCollection<QDMS.Instrument>(); CreateCommands(); }
public static List <Trade> Filter(List <Tag> selectedTags, List <Strategy> selectedStrategies, List <Instrument> selectedInstruments, IEnumerable <Trade> allTrades, TradeFilterSettings settings) { //filter dates var trades = allTrades .Where(x => x.DateClosed == null || x.DateClosed > settings.From) .Where(x => x.DateOpened < settings.To) .ToList(); //filter open if required if (settings.ClosedTradesOnly) { trades = trades.Where(x => !x.Open).ToList(); } //filter by strategy switch (settings.StrategyFilterMethod) { case FilterMethod.Any: trades = trades.Where(x => selectedStrategies.Contains(x.Strategy)).ToList(); break; case FilterMethod.Exclude: trades = trades.Where(x => !selectedStrategies.Contains(x.Strategy)).ToList(); break; } //filter by tags switch (settings.TagFilterMethod) { case FilterMethod.Any: trades = trades.Where(x => selectedTags.Intersect(x.Tags).Any()).ToList(); break; case FilterMethod.All: trades = trades.Where(x => selectedTags.Intersect(x.Tags).Count() == selectedTags.Count).ToList(); break; case FilterMethod.Exclude: trades = trades.Where(x => !selectedTags.Intersect(x.Tags).Any()).ToList(); break; } List <int> selectedInstrumentIDs = selectedInstruments.Select(x => x.ID).ToList(); //filter by instrument switch (settings.InstrumentFilterMethod) { case FilterMethod.Any: trades = trades.Where(x => x.Orders.Select(y => y.InstrumentID).Intersect(selectedInstrumentIDs).Any() || x.CashTransactions.Where(y => y.InstrumentID.HasValue).Select(y => y.InstrumentID.Value).Intersect(selectedInstrumentIDs).Any()) .ToList(); break; case FilterMethod.All: trades = trades.Where(x => x.Orders.Select(y => y.InstrumentID).Intersect(selectedInstrumentIDs).Union( x.CashTransactions.Where(y => y.InstrumentID.HasValue).Select(y => y.InstrumentID.Value)).Count() == selectedInstrumentIDs.Count) .ToList(); break; case FilterMethod.Exclude: trades = trades.Where(x => !x.Orders.Select(y => y.InstrumentID).Intersect(selectedInstrumentIDs).Any() && !x.CashTransactions.Where(y => y.InstrumentID.HasValue).Select(y => y.InstrumentID.Value).Intersect(selectedInstrumentIDs).Any()) .ToList(); break; } return(trades.ToList()); }