public void SetTrades(List <Trade> trades, ITradeDetailsAutoCalculatorService tradeCalculateService, IBroker broker) { AccountLastUpdated = DateTime.UtcNow; foreach (var t in Trades) { tradeCalculateService.RemoveTrade(t); } Trades.Clear(); Trades.AddRange(trades); Log.Debug($"Completed updating {broker.Name} trades"); _brokerAccountUpdatedSubject.OnNext(new BrokerAccountUpdated(this)); }
public void UpdateBrokerAccount( IBroker broker, IBrokersCandlesService candleService, IMarketDetailsService marketsService, ITradeDetailsAutoCalculatorService tradeCalculateService, Action <string> updateProgressAction, UpdateOption option = UpdateOption.OnlyIfNotRecentlyUpdated) { if (option == UpdateOption.OnlyIfNotRecentlyUpdated && (AccountLastUpdated != null && (DateTime.UtcNow - AccountLastUpdated.Value).TotalHours < 24)) { return; } Log.Debug($"Updating {broker.Name} account"); foreach (var t in Trades) { tradeCalculateService.RemoveTrade(t); } try { broker.UpdateAccount(this, candleService, marketsService, updateProgressAction, out var addedOrUpdatedTrades); foreach (var trade in addedOrUpdatedTrades) { RecalculateTrade(trade, candleService, marketsService, broker); } } catch (Exception ex) { Log.Error("Unable to update account", ex); MessageBox.Show($"Unable to update account - {ex.Message}", "Unable to update account", MessageBoxButtons.OK); } AccountLastUpdated = DateTime.UtcNow; Log.Debug($"Completed updating {broker.Name} trades"); _brokerAccountUpdatedSubject.OnNext(new BrokerAccountUpdated(this)); }