/// <summary> /// Event invocator for the AccountChanged event /// </summary> /// <param name="e">The AccountEvent</param> protected virtual void OnAccountChanged(AccountEvent e) { try { Log.Trace("Brokerage.OnAccountChanged(): " + e); var handler = AccountChanged; if (handler != null) handler(this, e); } catch (Exception err) { Log.Error(err); } }
/// <summary> /// Brokerages can send account updates, this include cash balance updates. Since it is of /// utmost important to always have an accurate picture of reality, we'll trust this information /// as truth /// </summary> private void HandleAccountChanged(AccountEvent account) { // how close are we? var delta = _algorithm.Portfolio.CashBook[account.CurrencySymbol].Amount - account.CashBalance; if (delta != 0) { Log.Trace(string.Format("BrokerageTransactionHandler.HandleAccountChanged(): {0} Cash Delta: {1}", account.CurrencySymbol, delta)); } // we don't actually want to do this, this data can be delayed // override the current cash value to we're always gauranted to be in sync with the brokerage's push updates //_algorithm.Portfolio.CashBook[account.CurrencySymbol].Quantity = account.CashBalance; }
/// <summary> /// Brokerages can send account updates, this include cash balance updates. Since it is of /// utmost important to always have an accurate picture of reality, we'll trust this information /// as truth /// </summary> private void HandleAccountChanged(AccountEvent account) { // how close are we? var delta = _algorithm.Portfolio.CashBook[account.CurrencySymbol].Amount - account.CashBalance; if (delta != 0) { Log.Trace(string.Format("BrokerageTransactionHandler.HandleAccountChanged(): {0} Cash Delta: {1}", account.CurrencySymbol, delta)); } // maybe we don't actually want to do this, this data can be delayed. Must be explicitly supported by brokerage if (_brokerage.AccountInstantlyUpdated) { // override the current cash value so we're always guaranteed to be in sync with the brokerage's push updates _algorithm.Portfolio.CashBook[account.CurrencySymbol].SetAmount(account.CashBalance); } }