示例#1
0
        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);
        }
示例#2
0
 private void SessionOnCurrencyPriceChanged(OEC.API.Currency currency, Price price)
 {
 }
示例#3
0
 private void SessionOnAccountSummaryChanged(OEC.API.Account account, OEC.API.Currency currency)
 {
     ProcessAccount(account, currency);
 }
示例#4
0
 private void SessionOnBalanceChanged(OEC.API.Account account, OEC.API.Currency currency)
 {
     ProcessAccount(account, currency);
 }