Esempio n. 1
0
        public bool BeginAccountInfoUpdate(AccountInfo accountInfo)
        {
            accountInfo.Balance = _runningAccountBalance;
            decimal totalPositionsMarketValue = 0;

            string updateResultMessage;

            List <Position> positions = _tradeEntities.Positions;

            lock (this)
            {
                foreach (Position position in positions)
                {
                    UpdatePosition(position.Symbol, 0, out updateResultMessage);

                    accountInfo.Balance += position.Result;

                    if (position.Info.MarketValue.HasValue)
                    {
                        totalPositionsMarketValue += position.Info.MarketValue.Value;
                    }
                }
            }

            accountInfo.Margin = _runningAccountBalance;

            accountInfo.Profit     = accountInfo.Balance - _runningAccountBalance;
            accountInfo.Credit     = 0;
            accountInfo.Equity     = accountInfo.Balance;
            accountInfo.FreeMargin = accountInfo.CalcuateFreeMargin(totalPositionsMarketValue);

            _account.AdoptInfo(accountInfo);
            return(true);
        }