示例#1
0
        private List <Command> CreateCommands(XElement accountNode, IEnumerable <Protocal.Commands.OrderPhaseChange> orderChanges, Protocal.Commands.ChangedFund changedFund, LastValues lastValues)
        {
            List <Command> result = new List <Command>();

            if (_account.AlertLevel > lastValues.AlertLevel)
            {
                result.Add(_account.CreateAlertLevelRisedCommand());
            }
            var orderCommands = this.CreateOrderChangedCommand(orderChanges);

            if (orderCommands.Count > 0)
            {
                result.AddRange(orderCommands);
            }
            if (lastValues.Neccessary != _account.Fund.Necessary)
            {
                result.Add(_account.CreateAccountUpdateCommand());
            }
            else if (changedFund.Result != null)
            {
                result.Add(_account.CreateAccountBalanceCommand((Fund)changedFund.Result));
            }

            if (_account.ChangedRequests != null)
            {
                Logger.InfoFormat("create commands changedDeliveryRequest count = {0}", _account.ChangedRequests.Count);
                foreach (var eachRequest in _account.ChangedRequests)
                {
                    result.Add(new DeliveryCommand(eachRequest.ToXmlNode()));
                }
            }

            return(result);
        }
示例#2
0
 private void ProcessOrderChanges(IEnumerable <Protocal.Commands.OrderPhaseChange> orderChanges, List <Command> commands, XElement accountNode, Protocal.Commands.ChangedFund changedFund, LastValues lastValues)
 {
     Logger.InfoFormat("order changes count = {0}", orderChanges.Count());
     if (orderChanges != null && orderChanges.Count() == 1 && orderChanges.Single().ChangeType == Protocal.Commands.OrderChangeType.Deleted)
     {
         this.ProcessForOrderDeleted(accountNode, (OrderChange)orderChanges.Single());
     }
     commands.AddRange(this.CreateCommands(accountNode, orderChanges, changedFund, lastValues));
 }