public void UpdateStats(Trade trade, bool skipCollectionLoad = false) { var tradeEntry = Context.Entry(trade); if (!skipCollectionLoad && //used to bypass annoyances w/ automated testing tradeEntry.State != EntityState.Added && tradeEntry.State != EntityState.Detached) //trade entry state check, otherwise the load is meaningless and will cause a crash { tradeEntry.Collection(x => x.Orders).Load(); tradeEntry.Collection(x => x.CashTransactions).Load(); tradeEntry.Collection(x => x.FXTransactions).Load(); } DateTime openDate = DetermineStartingDate(trade, Context); //Dates trade.DateOpened = openDate; if (trade.Open) { trade.DateClosed = null; } else { SetClosingDate(trade); } TradeTracker tracker = TradeSim.SimulateTrade(trade, Context, Datasourcer, _optionsCapitalUsageMultiplier); tracker.SetTradeStats(trade); }
/// <summary> /// Simulate the trade and update its stats. Does not save to db. /// </summary> /// <param name="trade"></param> /// <returns></returns> public async Task UpdateStats(Trade trade) { DateTime openDate = DetermineStartingDate(trade); //Dates trade.DateOpened = openDate; if (trade.Open) { trade.DateClosed = null; } else { SetClosingDate(trade); } TradeTracker tracker = await TradeSim.SimulateTrade(trade, _contextFactory, _dataSourcer, _settings.OptionsCapitalUsageMultiplier); tracker.SetTradeStats(trade); }