private void ProcessAccount(OEC.API.Account account, OEC.API.Currency currency) { if (account == null) { throw new ArgumentNullException(nameof(account)); } var balance = currency == null ? account.TotalBalance : account.Balances[currency]; var commission = account.AvgPositions .Where(pos => balance == account.TotalBalance || pos.Contract.Currency.ID == balance.Currency.ID) .Sum(pos => pos.RealizedCommissions.ToDecimal() + pos.OpenCommissions.ToDecimal()); var msg = this.CreatePortfolioChangeMessage(account.Name) .TryAdd(PositionChangeTypes.BeginValue, balance.Cash.ToDecimal()) .TryAdd(PositionChangeTypes.RealizedPnL, balance.RealizedPnL.ToDecimal()) .TryAdd(PositionChangeTypes.UnrealizedPnL, balance.OpenPnL.ToDecimal()) .TryAdd(PositionChangeTypes.CurrentValue, balance.NetLiquidatingValue.ToDecimal()) .TryAdd(PositionChangeTypes.Commission, commission); SendOutMessage(msg); }
private void SessionOnDetailedPositionChanged(OEC.API.Account account, OEC.API.Position position) { ProcessPosition(position); }
private void SessionOnPortfolioMarginChanged(OEC.API.Account account) { ProcessAccount(account, null); }
private void SessionOnAccountRiskLimitChanged(OEC.API.Account account) { ProcessAccount(account, null); }
private void SessionOnAccountSummaryChanged(OEC.API.Account account, OEC.API.Currency currency) { ProcessAccount(account, currency); }
private void SessionOnBalanceChanged(OEC.API.Account account, OEC.API.Currency currency) { ProcessAccount(account, currency); }