/// <summary>
        /// 
        /// </summary>
        /// <param name="command"></param>
        private void MultiUpdateCommand(Business.OpenTrade command)
        {
            List<Business.OpenTrade> listBackupData = new List<OpenTrade>();

            if (this.CommandList != null)
            {
                int count = this.CommandList.Count;
                for (int i = 0; i < count; i++)
                {
                    if (this.CommandList[i].Symbol.Name.Trim().ToUpper() == command.Symbol.Name.Trim().ToUpper())
                    {
                        #region BACKUP DATA
                        Business.OpenTrade newOpenTrade = new OpenTrade();
                        newOpenTrade.AgentCommission = this.CommandList[i].AgentCommission;
                        newOpenTrade.ClientCode = this.CommandList[i].ClientCode;
                        newOpenTrade.ClosePrice = this.CommandList[i].ClosePrice;
                        newOpenTrade.CommandCode = this.CommandList[i].CommandCode;
                        newOpenTrade.Comment = this.CommandList[i].Comment;
                        newOpenTrade.Commission = this.CommandList[i].Commission;
                        newOpenTrade.ExpTime = this.CommandList[i].ExpTime;
                        newOpenTrade.FreezeMargin = this.CommandList[i].FreezeMargin;
                        newOpenTrade.ID = this.CommandList[i].ID;
                        newOpenTrade.IGroupSecurity = this.CommandList[i].IGroupSecurity;
                        newOpenTrade.Investor = this.CommandList[i].Investor;
                        newOpenTrade.IsClose = this.CommandList[i].IsClose;
                        newOpenTrade.IsHedged = this.CommandList[i].IsHedged;
                        newOpenTrade.IsMultiClose = this.CommandList[i].IsMultiClose;
                        newOpenTrade.IsMultiUpdate = this.CommandList[i].IsMultiUpdate;
                        newOpenTrade.IsProcess = this.CommandList[i].IsProcess;
                        newOpenTrade.IsServer = this.CommandList[i].IsServer;
                        newOpenTrade.ManagerID = this.CommandList[i].ManagerID;
                        newOpenTrade.Margin = this.CommandList[i].Margin;
                        newOpenTrade.MaxDev = this.CommandList[i].MaxDev;
                        newOpenTrade.NumberUpdate = this.CommandList[i].NumberUpdate;
                        newOpenTrade.OpenPrice = this.CommandList[i].OpenPrice;
                        newOpenTrade.OpenTime = this.CommandList[i].OpenTime;
                        newOpenTrade.Size = this.CommandList[i].Size;
                        newOpenTrade.SpreaDifferenceInOpenTrade = this.CommandList[i].SpreaDifferenceInOpenTrade;
                        newOpenTrade.StopLoss = this.CommandList[i].StopLoss;
                        newOpenTrade.Swap = this.CommandList[i].Swap;
                        newOpenTrade.Symbol = this.CommandList[i].Symbol;
                        newOpenTrade.TakeProfit = this.CommandList[i].TakeProfit;
                        newOpenTrade.Taxes = this.CommandList[i].Taxes;
                        newOpenTrade.Type = this.CommandList[i].Type;
                        newOpenTrade.ClosePrice = this.CommandList[i].ClosePrice;
                        newOpenTrade.Profit = this.CommandList[i].Profit;
                        newOpenTrade.CloseTime = this.CommandList[i].CloseTime;

                        listBackupData.Add(newOpenTrade);
                        #endregion
                    }
                }
            }

            if (listBackupData != null)
            {
                TradingServer.DBW.DBWOnlineCommand newDBWOnlineCommand = new DBW.DBWOnlineCommand();
                bool resultUpdate = newDBWOnlineCommand.MultipleUpdateOpenTrade(listBackupData, command.StopLoss, command.TakeProfit);
                if (!resultUpdate)
                {
                    //rollback data
                    RollBackData(listBackupData, 2);
                }
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="command"></param>
        private void MultiCloseCommand(Business.OpenTrade command)
        {
            List<Business.OpenTrade> rollbackData = new List<OpenTrade>();

            if (this.CommandList != null)
            {
                for (int i = 0; i < this.CommandList.Count; i++)
                {
                    if (this.CommandList[i].Symbol.Name.ToUpper().Trim() == command.Symbol.Name.ToUpper().Trim())
                    {
                        bool isPending = TradingServer.Model.TradingCalculate.Instance.CheckIsPendingPosition(this.CommandList[i].Type.ID);
                        if (!isPending)
                        {
                            #region BACKUP DATA
                            Business.OpenTrade newOpenTrade = new OpenTrade();
                            newOpenTrade.AgentCommission = this.CommandList[i].AgentCommission;
                            newOpenTrade.ClientCode = this.CommandList[i].ClientCode;
                            newOpenTrade.ClosePrice = this.CommandList[i].ClosePrice;
                            newOpenTrade.CommandCode = this.CommandList[i].CommandCode;
                            newOpenTrade.Comment = this.CommandList[i].Comment;
                            newOpenTrade.Commission = this.CommandList[i].Commission;
                            newOpenTrade.ExpTime = this.CommandList[i].ExpTime;
                            newOpenTrade.FreezeMargin = this.CommandList[i].FreezeMargin;
                            newOpenTrade.ID = this.CommandList[i].ID;
                            newOpenTrade.IGroupSecurity = this.CommandList[i].IGroupSecurity;
                            newOpenTrade.Investor = this.CommandList[i].Investor;
                            newOpenTrade.IsClose = this.CommandList[i].IsClose;
                            newOpenTrade.IsHedged = this.CommandList[i].IsHedged;
                            newOpenTrade.IsMultiClose = this.CommandList[i].IsMultiClose;
                            newOpenTrade.IsMultiUpdate = this.CommandList[i].IsMultiUpdate;
                            newOpenTrade.IsProcess = this.CommandList[i].IsProcess;
                            newOpenTrade.IsServer = this.CommandList[i].IsServer;
                            newOpenTrade.ManagerID = this.CommandList[i].ManagerID;
                            newOpenTrade.Margin = this.CommandList[i].Margin;
                            newOpenTrade.MaxDev = this.CommandList[i].MaxDev;
                            newOpenTrade.NumberUpdate = this.CommandList[i].NumberUpdate;
                            newOpenTrade.OpenPrice = this.CommandList[i].OpenPrice;
                            newOpenTrade.OpenTime = this.CommandList[i].OpenTime;
                            newOpenTrade.Size = this.CommandList[i].Size;
                            newOpenTrade.SpreaDifferenceInOpenTrade = this.CommandList[i].SpreaDifferenceInOpenTrade;
                            newOpenTrade.StopLoss = this.CommandList[i].StopLoss;
                            newOpenTrade.Swap = this.CommandList[i].Swap;
                            newOpenTrade.Symbol = this.CommandList[i].Symbol;
                            newOpenTrade.TakeProfit = this.CommandList[i].TakeProfit;
                            newOpenTrade.Taxes = this.CommandList[i].Taxes;
                            newOpenTrade.Type = this.CommandList[i].Type;
                            newOpenTrade.CloseTime = DateTime.Now;
                            newOpenTrade.Profit = this.CommandList[i].Profit;

                            if (this.CommandList[i].Type.ID == 2 || this.CommandList[i].Type.ID == 12)
                            {
                                //newOpenTrade.ClosePrice = this.CommandList[i].Symbol.CreateAskPrices(command.ClosePrice, this.CommandList[i].Symbol.SpreadByDefault,
                                //    this.CommandList[i].Symbol.Digit, int.Parse(this.CommandList[i].SpreaDifferenceInOpenTrade.ToString()));
                                newOpenTrade.ClosePrice = this.CommandList[i].Symbol.CreateAskPrices(this.CommandList[i].Symbol.Digit,
                                    int.Parse(this.CommandList[i].SpreaDifferenceInOpenTrade.ToString()), command.ClosePrice);
                            }

                            #region SET NEW DATA
                            newOpenTrade.CalculatorProfitCommand(newOpenTrade);
                            newOpenTrade.Profit = newOpenTrade.Symbol.ConvertCurrencyToUSD(newOpenTrade.Symbol.Currency, newOpenTrade.Profit, false,
                                newOpenTrade.SpreaDifferenceInOpenTrade, newOpenTrade.Symbol.Digit);
                            #endregion

                            rollbackData.Add(newOpenTrade);
                            #endregion
                        }
                    }
                }
            }

            if (rollbackData != null && rollbackData.Count > 0)
            {
                TradingServer.DBW.DBWOnlineCommand newDBWOnlineCommand = new DBW.DBWOnlineCommand();
                bool resultMultiClose = newDBWOnlineCommand.MultipleCloseOpenTrade(rollbackData);
                if (!resultMultiClose)
                {
                    //rollback data
                    this.RollBackData(rollbackData, 1);
                }
            }
        }