/// <summary>
        /// BEGIN CALCULATION SWAP OF SYMBOL
        /// </summary>
        internal void BeginCalculationSwap(string TargetName, Business.TimeEvent timeEvent)
        {
            return;

            List<Business.Investor> listInvestor = new List<Investor>();

            #region BUILD TIME CURRENT
            DateTime timeCurrent;   //USING CHECK THREE DAY SWAP

            if (DateTime.Now.Hour < 10)
                timeCurrent = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day - 1, 00, 00, 00);
            else
                timeCurrent = DateTime.Now;
            #endregion

            //IF DAY OF WEEK == SUNDAY OR SATURDAY
            if (timeCurrent.DayOfWeek == DayOfWeek.Saturday || timeCurrent.DayOfWeek == DayOfWeek.Sunday)
                return;

            #region CALCULATION SWAP
            if (Business.Market.CommandExecutor != null)
            {
                int count = Business.Market.CommandExecutor.Count;
                for (int i = 0; i < Business.Market.CommandExecutor.Count; i++)
                {
                    bool isComplete = false;
                    bool isPending = TradingServer.Model.TradingCalculate.Instance.CheckIsPendingPosition(Business.Market.CommandExecutor[i].Type.ID);
                    if (!isPending)
                    {
                        //Begin log calculation swap
                        string strBeforeBalance = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(Business.Market.CommandExecutor[i].Investor.Balance.ToString(), 2);
                        string strBeforeSwap = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(Business.Market.CommandExecutor[i].Swap.ToString(), 2);
                        string strBeforeTotalSwap = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(Business.Market.CommandExecutor[i].TotalSwap.ToString(), 2);
                        string strBid = string.Empty;
                        string strAsk = string.Empty;

                        #region CHECK IF COMMAND OPEN AFTER TIME CURRENT THEN DON'T CALCULATION SWAP
                        TimeSpan checkTime = timeCurrent - Business.Market.CommandExecutor[i].OpenTime;

                        if (checkTime.TotalSeconds < 0)
                            continue;
                        #endregion

                        bool IsEnable = false;
                        string Type = string.Empty;
                        double LongPosition = 0;
                        double ShortPosition = 0;
                        string ThreeDaySwaps = string.Empty;
                        bool UseOpenPrice = false;
                        int SpreadDifference = 0;
                        double CloseAsk = 0;
                        double closeAskCurrency = 0;
                        double SwapPrice = 0;

                        #region GET PARAMETER CALCULATION SWAP
                        if (Business.Market.CommandExecutor[i].Symbol.ParameterItems != null)
                        {
                            int countParameter = Business.Market.CommandExecutor[i].Symbol.ParameterItems.Count;
                            for (int j = 0; j < countParameter; j++)
                            {
                                if (Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].Code == "S035")
                                {
                                    if (Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].BoolValue == 1)
                                        IsEnable = true;
                                }

                                if (Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].Code == "S036")
                                {
                                    Type = Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].StringValue;
                                }

                                if (Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].Code == "S037")
                                {
                                    double.TryParse(Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].NumValue, out LongPosition);
                                }

                                if (Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].Code == "S038")
                                {
                                    double.TryParse(Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].NumValue, out ShortPosition);
                                }

                                if (Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].Code == "S039")
                                {
                                    ThreeDaySwaps = Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].StringValue;
                                }

                                if (Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].Code == "S040")
                                {
                                    if (Business.Market.CommandExecutor[i].Symbol.ParameterItems[j].BoolValue == 1)
                                        UseOpenPrice = true;
                                }
                            }
                        }
                        #endregion

                        #region CHECK ISENABLE CALCULATION SWAP
                        if (IsEnable)
                        {
                            DayOfWeek ThreeDay = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), ThreeDaySwaps, true);
                            int numThreeday = 1;
                            if (ThreeDay == timeCurrent.DayOfWeek)
                                numThreeday = 3;

                            switch (Type)
                            {
                                #region BY POINTS[ LOTS * LONG_OR_SHORT_POINTS * POINTSIZE ]
                                case "by points[ lots * long_or_short_points * pointsize ]":
                                    {
                                        #region PROCESS GET SPREAD DIFFIRENCES
                                        if (Business.Market.CommandExecutor[i].IGroupSecurity != null)
                                        {
                                            if (Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig != null)
                                            {
                                                int countIGroupSecurityConfig = Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig.Count;
                                                for (int n = 0; n < countIGroupSecurityConfig; n++)
                                                {
                                                    if (Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig[n].Code == "B14")
                                                    {
                                                        int.TryParse(Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig[n].NumValue, out SpreadDifference);
                                                        break;
                                                    }
                                                }
                                            }
                                        }
                                        #endregion

                                        #region PROCESS GET PRICE OF DAY
                                        ProcessQuoteLibrary.Business.BarTick BarTick1M = new ProcessQuoteLibrary.Business.BarTick();
                                        ProcessQuoteLibrary.Business.BarTick barTick1MCurrency = new ProcessQuoteLibrary.Business.BarTick();
                                        //Get Price Bid and Ask Close Of Day
                                        if (ProcessQuoteLibrary.Business.QuoteProcess.listQuotes != null)
                                        {
                                            #region GET ONLINE CANDLE WITH SYMBOL
                                            int countQuote = ProcessQuoteLibrary.Business.QuoteProcess.listQuotes.Count;
                                            for (int n = 0; n < countQuote; n++)
                                            {
                                                if (ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[n].Name == Business.Market.CommandExecutor[i].Symbol.Name)
                                                {
                                                    BarTick1M = ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[n].BarTick1M;
                                                    //CloseAsk = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(BarTick1M.Close, Business.Market.CommandExecutor[i].Symbol.SpreadByDefault,
                                                    //    Business.Market.CommandExecutor[i].Symbol.Digit, int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()));
                                                    CloseAsk = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(Business.Market.CommandExecutor[i].Symbol.Digit,
                                                        int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()), BarTick1M.CloseAsk);
                                                    break;
                                                }
                                            }
                                            #endregion

                                            #region GET ONLINE CANDLE WITH CURRENCY
                                            for (int m = 0; m < countQuote; m++)
                                            {
                                                if (ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[m].Name.Trim() == Business.Market.CommandExecutor[i].Symbol.Currency.Trim())
                                                {
                                                    barTick1MCurrency = ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[m].BarTick1M;

                                                    //GET DIGIT OF SYMBOL CURRENCY
                                                    if (Business.Market.SymbolList != null)
                                                    {
                                                        int countSymbol = Business.Market.SymbolList.Count;
                                                        for (int k = 0; k < countSymbol; k++)
                                                        {
                                                            if (Business.Market.SymbolList[k].Name.ToUpper().Trim() == Business.Market.CommandExecutor[i].Symbol.Currency.ToUpper().Trim())
                                                            {
                                                                //closeAskCurrency = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(barTick1MCurrency.Close, 0,
                                                                //   Business.Market.SymbolList[k].Digit, int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()));
                                                                closeAskCurrency = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(Business.Market.SymbolList[k].Digit,
                                                                    int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()), barTick1MCurrency.CloseAsk);
                                                                break;
                                                            }
                                                        }
                                                    }

                                                    break;
                                                }
                                            }
                                            #endregion
                                        }
                                        #endregion

                                        if (BarTick1M.Open > 0 && BarTick1M.Close > 0)
                                        {
                                            SwapPrice = Math.Round(Business.Market.CommandExecutor[i].Symbol.Points(Business.Market.CommandExecutor[i].Size, LongPosition, ShortPosition,
                                                    BarTick1M.Close, CloseAsk, Business.Market.CommandExecutor[i].Symbol.ContractSize,
                                                    Business.Market.CommandExecutor[i].Symbol.Digit, numThreeday, Business.Market.CommandExecutor[i].Type.ID), 2);

                                            //BUILD STRING BID/ASK SYMBOL
                                            strBid = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(BarTick1M.Close.ToString(), Business.Market.CommandExecutor[i].Symbol.Digit);
                                            strAsk = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(CloseAsk.ToString(), Business.Market.CommandExecutor[i].Symbol.Digit);

                                            //if (SwapPrice > 0)
                                            //    SwapPrice = -SwapPrice;

                                            Business.Market.CommandExecutor[i].TotalSwap += SwapPrice;

                                            TradingServer.Facade.FacadeUpdateTotalSwapOnlineCommand(Business.Market.CommandExecutor[i].ID, Business.Market.CommandExecutor[i].TotalSwap);

                                            double totalSwaps = Business.Market.CommandExecutor[i].Swap + SwapPrice;

                                            //Set new Swap To Command
                                            Business.Market.CommandExecutor[i].Swap = totalSwaps;

                                            //Call Fucntion Update Swap In Investor List
                                            bool resultUpdateInInvestorList = Market.marketInstance.FindAndUpdateSwapInInvestorList(Business.Market.CommandExecutor[i].ID,
                                                Business.Market.CommandExecutor[i].Investor.InvestorID, totalSwaps, Business.Market.CommandExecutor[i].TotalSwap);

                                            //Call Function Update Swap In Symbol List
                                            bool resultUpdateInSymbolList = Market.marketInstance.FindAndUpdateSwapInSymbolList(Business.Market.CommandExecutor[i].ID,
                                                Business.Market.CommandExecutor[i].Symbol.Name, totalSwaps, Business.Market.CommandExecutor[i].TotalSwap);

                                            //UPDATE SWAP ONLINE COMMAND
                                            TradingServer.Facade.FacadeUpdateSwapOnlineCommand(Business.Market.CommandExecutor[i].ID,
                                                Business.Market.CommandExecutor[i].Swap);

                                            isComplete = true;
                                        }
                                    }
                                    break;
                                #endregion

                                #region BY MONEY [ LOTS * LONG_OR-SHORT ]
                                case "by money [ lots * long_or-short ]":
                                    {
                                        SwapPrice = Math.Round(Business.Market.CommandExecutor[i].Symbol.Money(Business.Market.CommandExecutor[i].Size, LongPosition, ShortPosition, numThreeday,
                                            Business.Market.CommandExecutor[i].Type.ID), 2);

                                        //BUILD BID/ASK SYMBOL
                                        strBid = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(Business.Market.CommandExecutor[i].Symbol.TickValue.Bid.ToString(),
                                            Business.Market.CommandExecutor[i].Symbol.Digit);
                                        strAsk = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(Business.Market.CommandExecutor[i].Symbol.TickValue.Ask.ToString(),
                                            Business.Market.CommandExecutor[i].Symbol.Digit);

                                        //if (SwapPrice > 0)
                                        //    SwapPrice = -SwapPrice;
                                                                                
                                        Business.Market.CommandExecutor[i].TotalSwap += SwapPrice;

                                        TradingServer.Facade.FacadeUpdateTotalSwapOnlineCommand(Business.Market.CommandExecutor[i].ID, Business.Market.CommandExecutor[i].TotalSwap);

                                        double totalSwaps = Business.Market.CommandExecutor[i].Swap + SwapPrice;

                                        Business.Market.CommandExecutor[i].Swap = totalSwaps;

                                        //Call Fucntion Update Swap In Investor List
                                        bool resultUpdateInInvestorList = Market.marketInstance.FindAndUpdateSwapInInvestorList(Business.Market.CommandExecutor[i].ID,
                                            Business.Market.CommandExecutor[i].Investor.InvestorID, totalSwaps, Business.Market.CommandExecutor[i].TotalSwap);

                                        //Call Function Update Swap In Symbol List
                                        bool resultUpdateInSymbolList = Market.marketInstance.FindAndUpdateSwapInSymbolList(Business.Market.CommandExecutor[i].ID,
                                            Business.Market.CommandExecutor[i].Symbol.Name, totalSwaps, Business.Market.CommandExecutor[i].TotalSwap);

                                        //UPDATE SWAP IN DATABASE
                                        TradingServer.Facade.FacadeUpdateSwapOnlineCommand(Business.Market.CommandExecutor[i].ID,
                                            Business.Market.CommandExecutor[i].Swap);

                                        isComplete = true;  
                                    }
                                    break;
                                #endregion

                                #region BY INTEREST [ LOTS * LONG_OR_SHORT / 100 / 360 ]
                                case "by interest [ lots * long_or_short / 100 / 360 ]":
                                    {
                                        #region PROCESS GET SPREAD DIFFIRENCES
                                        if (Business.Market.CommandExecutor[i].IGroupSecurity != null)
                                        {
                                            if (Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig != null)
                                            {
                                                int countIGroupSecurityConfig = Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig.Count;
                                                for (int n = 0; n < countIGroupSecurityConfig; n++)
                                                {
                                                    if (Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig[n].Code == "B14")
                                                    {
                                                        int.TryParse(Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig[n].NumValue, out SpreadDifference);
                                                        break;
                                                    }
                                                }
                                            }
                                        }
                                        #endregion

                                        #region PROCESS GET PRICE OF DAY
                                        ProcessQuoteLibrary.Business.BarTick BarTick1M = new ProcessQuoteLibrary.Business.BarTick();
                                        ProcessQuoteLibrary.Business.BarTick barTick1MCurrency = new ProcessQuoteLibrary.Business.BarTick();
                                        //Get Price Bid and Ask Close Of Day
                                        if (ProcessQuoteLibrary.Business.QuoteProcess.listQuotes != null)
                                        {
                                            #region GET ONLINE CANDLE WITH SYMBOL
                                            int countQuote = ProcessQuoteLibrary.Business.QuoteProcess.listQuotes.Count;
                                            for (int n = 0; n < countQuote; n++)
                                            {
                                                if (ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[n].Name == Business.Market.CommandExecutor[i].Symbol.Name)
                                                {
                                                    BarTick1M = ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[n].BarTick1M;
                                                    //CloseAsk = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(BarTick1M.Close, Business.Market.CommandExecutor[i].Symbol.SpreadByDefault,
                                                    //    Business.Market.CommandExecutor[i].Symbol.Digit, int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()));
                                                    CloseAsk = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(Business.Market.CommandExecutor[i].Symbol.Digit,
                                                        int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()), BarTick1M.CloseAsk);
                                                    break;
                                                }
                                            }
                                            #endregion

                                            #region GET ONLINE CANDLE WITH CURRENCY
                                            for (int m = 0; m < countQuote; m++)
                                            {
                                                if (ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[m].Name.Trim() == Business.Market.CommandExecutor[i].Symbol.Currency.Trim())
                                                {
                                                    barTick1MCurrency = ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[m].BarTick1M;

                                                    //GET DIGIT OF SYMBOL CURRENCY
                                                    if (Business.Market.SymbolList != null)
                                                    {
                                                        int countSymbol = Business.Market.SymbolList.Count;
                                                        for (int k = 0; k < countSymbol; k++)
                                                        {
                                                            if (Business.Market.SymbolList[k].Name.ToUpper().Trim() == Business.Market.CommandExecutor[i].Symbol.Currency.ToUpper().Trim())
                                                            {
                                                                //closeAskCurrency = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(barTick1MCurrency.Close, 0,
                                                                //   Business.Market.SymbolList[k].Digit, int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()));
                                                                closeAskCurrency = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(Business.Market.SymbolList[k].Digit,
                                                                    int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()), barTick1MCurrency.CloseAsk);
                                                                break;
                                                            }
                                                        }
                                                    }

                                                    break;
                                                }
                                            }
                                            #endregion
                                        }
                                        #endregion

                                        //Call Function Convert If Symbol Is XXXUSD    
                                        #region GET LONG AND SHORT IN IGROUPSYMBOL
                                        if (Business.Market.IGroupSymbolList != null)
                                        {
                                            int countIGroupSymbol = Business.Market.IGroupSymbolList.Count;
                                            for (int j = 0; j < countIGroupSymbol; j++)
                                            {
                                                if (Business.Market.IGroupSymbolList[j].SymbolID == Business.Market.CommandExecutor[i].Symbol.SymbolID &&
                                                    Business.Market.IGroupSymbolList[j].InvestorGroupID == Business.Market.CommandExecutor[i].Investor.InvestorGroupInstance.InvestorGroupID)
                                                {
                                                    if (Business.Market.IGroupSymbolList[j].IGroupSymbolConfig != null)
                                                    {
                                                        int countParameter = Business.Market.IGroupSymbolList[j].IGroupSymbolConfig.Count;
                                                        for (int n = 0; n < countParameter; n++)
                                                        {
                                                            if (Business.Market.IGroupSymbolList[j].IGroupSymbolConfig[n].Code == "GS01")
                                                            {
                                                                LongPosition = double.Parse(Business.Market.IGroupSymbolList[j].IGroupSymbolConfig[n].NumValue);
                                                            }

                                                            if (Business.Market.IGroupSymbolList[j].IGroupSymbolConfig[n].Code == "GS02")
                                                            {
                                                                ShortPosition = double.Parse(Business.Market.IGroupSymbolList[j].IGroupSymbolConfig[n].NumValue);
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        #endregion

                                        //Calculation Swaps
                                        SwapPrice = Math.Round(Business.Market.CommandExecutor[i].Symbol.Interest(Business.Market.CommandExecutor[i].Size, LongPosition, ShortPosition, BarTick1M.Close,
                                            Business.Market.CommandExecutor[i].Symbol.ContractSize, numThreeday, Business.Market.CommandExecutor[i].Type.ID), 2);

                                        //BUILD BID/ASK SYMBOL
                                        strBid = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(BarTick1M.Close.ToString(), Business.Market.CommandExecutor[i].Symbol.Digit);
                                        strAsk = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(CloseAsk.ToString(), Business.Market.CommandExecutor[i].Symbol.Digit);

                                        double closePrice = 0;

                                        if (Business.Market.CommandExecutor[i].Type.ID == 1)
                                            closePrice = barTick1MCurrency.Close;
                                        else
                                            closePrice = closeAskCurrency;

                                        SwapPrice = Business.Market.CommandExecutor[i].Symbol.ConvertCurrencyToUSD(Business.Market.CommandExecutor[i].Symbol.Currency, SwapPrice, closePrice, 2);

                                        //if (SwapPrice > 0)
                                        //    SwapPrice = -SwapPrice;
                                                                                
                                        Business.Market.CommandExecutor[i].TotalSwap += SwapPrice;

                                        TradingServer.Facade.FacadeUpdateTotalSwapOnlineCommand(Business.Market.CommandExecutor[i].ID, Business.Market.CommandExecutor[i].TotalSwap);

                                        double totalSwaps = Business.Market.CommandExecutor[i].Swap + SwapPrice;

                                        //Set new Swap To Command
                                        Business.Market.CommandExecutor[i].Swap = totalSwaps;

                                        //Call Fucntion Update Swap In Investor List
                                        bool resultUpdateInInvestorList = Market.marketInstance.FindAndUpdateSwapInInvestorList(Business.Market.CommandExecutor[i].ID,
                                            Business.Market.CommandExecutor[i].Investor.InvestorID, totalSwaps, Business.Market.CommandExecutor[i].TotalSwap);

                                        //Call Function Update Swap In Symbol List
                                        bool resultUpdateInSymbolList = Market.marketInstance.FindAndUpdateSwapInSymbolList(Business.Market.CommandExecutor[i].ID,
                                            Business.Market.CommandExecutor[i].Symbol.Name, totalSwaps, Business.Market.CommandExecutor[i].TotalSwap);

                                        //UPDATE SWAP IN DATABASE   
                                        TradingServer.Facade.FacadeUpdateSwapOnlineCommand(Business.Market.CommandExecutor[i].ID,
                                            Business.Market.CommandExecutor[i].Swap);

                                        isComplete = true;
                                    }
                                    break;
                                #endregion

                                #region BY MONEY IN MARGIN CURRENCY [ LOTS * LONG_OR_SHORT ]
                                case "by money in margin currency [ lots * long_or_short ]":
                                    {
                                        #region PROCESS GET SPREAD DIFFIRENCES
                                        if (Business.Market.CommandExecutor[i].IGroupSecurity != null)
                                        {
                                            if (Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig != null)
                                            {
                                                int countIGroupSecurityConfig = Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig.Count;
                                                for (int n = 0; n < countIGroupSecurityConfig; n++)
                                                {
                                                    if (Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig[n].Code == "B14")
                                                    {
                                                        int.TryParse(Business.Market.CommandExecutor[i].IGroupSecurity.IGroupSecurityConfig[n].NumValue, out SpreadDifference);
                                                        break;
                                                    }
                                                }
                                            }
                                        }
                                        #endregion

                                        #region PROCESS GET PRICE OF DAY
                                        ProcessQuoteLibrary.Business.BarTick BarTick1M = new ProcessQuoteLibrary.Business.BarTick();
                                        ProcessQuoteLibrary.Business.BarTick barTick1MCurrency = new ProcessQuoteLibrary.Business.BarTick();
                                        //Get Price Bid and Ask Close Of Day
                                        if (ProcessQuoteLibrary.Business.QuoteProcess.listQuotes != null)
                                        {
                                            #region GET ONLINE CANDLE WITH SYMBOL
                                            int countQuote = ProcessQuoteLibrary.Business.QuoteProcess.listQuotes.Count;
                                            for (int n = 0; n < countQuote; n++)
                                            {
                                                if (ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[n].Name == Business.Market.CommandExecutor[i].Symbol.Name)
                                                {
                                                    BarTick1M = ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[n].BarTick1M;
                                                    //CloseAsk = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(BarTick1M.Close, Business.Market.CommandExecutor[i].Symbol.SpreadByDefault,
                                                    //    Business.Market.CommandExecutor[i].Symbol.Digit, int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()));
                                                    CloseAsk = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(Business.Market.CommandExecutor[i].Symbol.Digit,
                                                        int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()), BarTick1M.CloseAsk);
                                                    break;
                                                }
                                            }
                                            #endregion

                                            #region GET ONLINE CANDLE WITH CURRENCY
                                            for (int m = 0; m < countQuote; m++)
                                            {
                                                if (ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[m].Name.Trim() == Business.Market.CommandExecutor[i].Symbol.Currency.Trim())
                                                {
                                                    barTick1MCurrency = ProcessQuoteLibrary.Business.QuoteProcess.listQuotes[m].BarTick1M;

                                                    //GET DIGIT OF SYMBOL CURRENCY
                                                    if (Business.Market.SymbolList != null)
                                                    {
                                                        int countSymbol = Business.Market.SymbolList.Count;
                                                        for (int k = 0; k < countSymbol; k++)
                                                        {
                                                            if (Business.Market.SymbolList[k].Name.ToUpper().Trim() == Business.Market.CommandExecutor[i].Symbol.Currency.ToUpper().Trim())
                                                            {
                                                                //closeAskCurrency = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(barTick1MCurrency.Close, 0,
                                                                //   Business.Market.SymbolList[k].Digit, int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()));
                                                                closeAskCurrency = Business.Market.CommandExecutor[i].Symbol.CreateAskPrices(Business.Market.SymbolList[k].Digit,
                                                                    int.Parse(Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade.ToString()), barTick1MCurrency.CloseAsk);
                                                                break;
                                                            }
                                                        }
                                                    }

                                                    break;
                                                }
                                            }
                                            #endregion
                                        }
                                        #endregion

                                        //Calculation Swap
                                        SwapPrice = Math.Round(Business.Market.CommandExecutor[i].Symbol.MoneyInMarginCurrency(Business.Market.CommandExecutor[i].Size,
                                            LongPosition, ShortPosition, numThreeday, Business.Market.CommandExecutor[i].Type.ID), 2);

                                        //BUILD BID/ASK SYMBOL
                                        strBid = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(BarTick1M.Close.ToString(), Business.Market.CommandExecutor[i].Symbol.Digit);
                                        strAsk = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(CloseAsk.ToString(), Business.Market.CommandExecutor[i].Symbol.Digit);

                                        double closePrice = 0;

                                        if (Business.Market.CommandExecutor[i].Type.ID == 1)
                                            closePrice = barTick1MCurrency.Close;
                                        else
                                            closePrice = closeAskCurrency;

                                        Business.Market.CommandExecutor[i].Symbol.ConvertCurrencyToUSD(Business.Market.CommandExecutor[i].Symbol.Currency, SwapPrice, closePrice, 2);

                                        //if (SwapPrice > 0)
                                        //    SwapPrice = -SwapPrice;

                                        Business.Market.CommandExecutor[i].TotalSwap += SwapPrice;

                                        TradingServer.Facade.FacadeUpdateTotalSwapOnlineCommand(Business.Market.CommandExecutor[i].ID, Business.Market.CommandExecutor[i].TotalSwap);

                                        double totalSwaps = Business.Market.CommandExecutor[i].Swap + SwapPrice;
                                        Business.Market.CommandExecutor[i].Swap = totalSwaps;

                                        //Call Fucntion Update Swap In Investor List
                                        bool resultUpdateInInvestorList = Market.marketInstance.FindAndUpdateSwapInInvestorList(Business.Market.CommandExecutor[i].ID,
                                            Business.Market.CommandExecutor[i].Investor.InvestorID, totalSwaps, Business.Market.CommandExecutor[i].TotalSwap);

                                        //Call Function Update Swap In Symbol List
                                        bool resultUpdateInSymbolList = Market.marketInstance.FindAndUpdateSwapInSymbolList(Business.Market.CommandExecutor[i].ID,
                                            Business.Market.CommandExecutor[i].Symbol.Name, totalSwaps, Business.Market.CommandExecutor[i].TotalSwap);

                                        //UPDATE SWAP IN DATABASE
                                        TradingServer.Facade.FacadeUpdateSwapOnlineCommand(Business.Market.CommandExecutor[i].ID,
                                            Business.Market.CommandExecutor[i].Swap);

                                        isComplete = true;
                                    }
                                    break;
                                #endregion
                            }

                            if (isComplete)
                            {
                                //End login calculation swap
                                string strAfterBalance = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(Business.Market.CommandExecutor[i].Investor.Balance.ToString(), 2);
                                string strAfterSwap = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(SwapPrice.ToString(), 2);
                                string strAfterTotalSwap = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(Business.Market.CommandExecutor[i].TotalSwap.ToString(), 2);
                                string strSize = TradingServer.Model.TradingCalculate.Instance.BuildStringWithDigit(Business.Market.CommandExecutor[i].Size.ToString(), 2);

                                //'00001140: calculation swap order #004432443 - current balance: 40000 - old swap: 5.00'
                                string content = "'" + Business.Market.CommandExecutor[i].Investor.Code + "': calculation swap order #" + Business.Market.CommandExecutor[i].CommandCode +
                                    " name: " + Business.Market.CommandExecutor[i].Symbol.Name + " size: " + strSize + " old balance: " + strBeforeBalance + " - old swap: " + strBeforeSwap +
                                    " - old total swap: " + strBeforeTotalSwap + " -> " + "current balance: " + strAfterBalance + " - current swap: " + strAfterSwap + " - current total swap: " + strAfterTotalSwap + "(" + strBid + "/" + strAsk + ")";

                                TradingServer.Facade.FacadeAddNewSystemLog(5, content, "[calculation swap]", "", Business.Market.CommandExecutor[i].Investor.Code);

                                //SEND NOTIFY TO MANAGER CHANGE COMMAND
                                TradingServer.Facade.FacadeSendNoticeManagerRequest(1, Business.Market.CommandExecutor[i]);

                                //SEND NOTIFY TO MANAGER CHANGE ACCOUNT
                                TradingServer.Facade.FacadeSendNotifyManagerRequest(3, Business.Market.CommandExecutor[i].Investor);

                                #region SEND NOTIFY TO INVESTOR IF IT ONLINE
                                if (Business.Market.CommandExecutor[i].Investor.IsOnline)
                                {
                                    //Send Command To Client, Get Account And Online Command
                                    string MessageGetAccount = "CSW5789";

                                    if (Business.Market.CommandExecutor[i].Investor.ClientCommandQueue == null)
                                        Business.Market.CommandExecutor[i].Investor.ClientCommandQueue = new List<string>();

                                    Business.Market.CommandExecutor[i].Investor.ClientCommandQueue.Add(MessageGetAccount);
                                }
                                #endregion

                                #region SEND NOTIFY TO AGENT SYSTEM
                                string msg = "UpdateCommand$True,Update Command," + Business.Market.CommandExecutor[i].ID + "," +
                                        Business.Market.CommandExecutor[i].Investor.InvestorID + "," + Business.Market.CommandExecutor[i].Symbol.Name + "," +
                                        Business.Market.CommandExecutor[i].Size + "," + true + "," + Business.Market.CommandExecutor[i].OpenTime + "," +
                                        Business.Market.CommandExecutor[i].OpenPrice + "," + Business.Market.CommandExecutor[i].StopLoss + "," +
                                        Business.Market.CommandExecutor[i].TakeProfit + "," + Business.Market.CommandExecutor[i].ClosePrice + "," +
                                        Business.Market.CommandExecutor[i].Commission + "," + Business.Market.CommandExecutor[i].Swap + "," +
                                        Business.Market.CommandExecutor[i].Profit + "," + Business.Market.CommandExecutor[i].Comment + "," +
                                        Business.Market.CommandExecutor[i].ID + "," + Business.Market.CommandExecutor[i].Type.Name + "," + 1 + "," +
                                        Business.Market.CommandExecutor[i].ExpTime + "," + Business.Market.CommandExecutor[i].ClientCode + "," +
                                        Business.Market.CommandExecutor[i].CommandCode + "," + Business.Market.CommandExecutor[i].IsHedged + "," +
                                        Business.Market.CommandExecutor[i].Type.ID + "," + Business.Market.CommandExecutor[i].Margin + ",Update" + "," +
                                        Business.Market.CommandExecutor[i].AgentRefConfig + "," + Business.Market.CommandExecutor[i].SpreaDifferenceInOpenTrade;

                                //SEND NOTIFY UPDATE COMMAND TO AGENT
                                Business.AgentNotify newAgentNotify = new AgentNotify();
                                newAgentNotify.NotifyMessage = msg;
                                TradingServer.Agent.AgentConfig.Instance.AddNotifyToAgent(newAgentNotify, Business.Market.CommandExecutor[i].Investor.InvestorGroupInstance);
                                #endregion
                            }
                        }
                        #endregion
                    }
                }
            }
            #endregion

            if (Business.Market.InvestorList != null)
            {
                TradingServer.Facade.FacadeAddNewCommandHistory(Business.Market.InvestorList, timeCurrent);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="command"></param>
        /// <param name="digits"></param>
        internal void AutoSuperDealerOpen(Business.RequestDealer command, int digits)
        {
            ProcessQuoteLibrary.Business.BarTick barBid = new ProcessQuoteLibrary.Business.BarTick();
            barBid = this.GetCandlesTwoM(command.Request.Symbol.Name);
            barBid.High = Math.Round(barBid.High, digits);
            barBid.Low = Math.Round(barBid.Low, digits);
            barBid.HighAsk = Math.Round(barBid.HighAsk, digits);
            barBid.LowAsk = Math.Round(barBid.LowAsk, digits);

            //double spreadDifference = command.Request.Symbol.SpreadDifference;
            double spreadDifference = command.Request.SpreaDifferenceInOpenTrade;
            double spreadDefault = 0;

            for (int i = command.Request.Symbol.ParameterItems.Count - 1; i >= 0; i--)
            {
                if (command.Request.Symbol.ParameterItems[i].Code == "S013")
                {
                    double.TryParse(command.Request.Symbol.ParameterItems[i].NumValue, out spreadDefault);
                    break;
                }
            }

            int type = Business.Symbol.ConvertCommandIsBuySell(command.Request.Type.ID);
            if (type == 1)
            {
                ProcessQuoteLibrary.Business.BarTick barAsk = new ProcessQuoteLibrary.Business.BarTick();
                barAsk = barBid;
                double spreadDiff = Business.Symbol.ConvertNumberPip(digits, spreadDifference);
                double spreadDef = Business.Symbol.ConvertNumberPip(digits, spreadDefault);
                if (command.Request.Symbol.ApplySpread)
                {
                    double high = (double)barBid.High + (double)spreadDiff + (double)spreadDef;
                    barAsk.High = Math.Round(high, digits);
                    double low = (double)barBid.Low + (double)spreadDiff + (double)spreadDef;
                    barAsk.Low = Math.Round(low, digits);
                }
                else
                {
                    double high = (double)barBid.HighAsk + (double)spreadDiff;
                    barAsk.High = Math.Round(high, digits);
                    double low = (double)barBid.LowAsk + (double)spreadDiff;
                    barAsk.Low = Math.Round(low, digits);
                }

                if (barAsk.High >= command.Request.OpenPrice && command.Request.OpenPrice >= barAsk.Low)
                {
                    command.FlagConfirm = true;
                    command.Notice = "RD03";
                    //this.AddRequestDealerToInvestor(command);
                    command.Request.Symbol.MarketAreaRef.AddCommand(command.Request);
                    command.AgentCode = "system";
                    command.Answer = "Confirm";
                    TradingServer.Facade.FacadeSendNoticeManagerDealerRequest(command);
                    return;
                }
                else
                {
                    command.FlagConfirm = false;
                    command.Notice = "RD04";
                    this.AddRequestDealerToInvestor(command);
                    command.AgentCode = "system";
                    command.Answer = "Requote";
                    TradingServer.Facade.FacadeSendNoticeManagerDealerRequest(command);
                    TradingServer.Facade.FacadeAddNewSystemLog(3, "'" + command.Request.Investor.Code + "': system requote " + command.LogRequestSuper(barAsk.Low, barAsk.High), "Requote", "", "system");
                    return;
                }
            }
            else if (type == 2)
            {
                if (barBid.Low <= command.Request.OpenPrice && command.Request.OpenPrice <= barBid.High)
                {
                    command.FlagConfirm = true;
                    command.Notice = "RD06";
                    //this.AddRequestDealerToInvestor(command);
                    command.Request.Symbol.MarketAreaRef.AddCommand(command.Request);
                    command.AgentCode = "system";
                    command.Answer = "Confirm";
                    TradingServer.Facade.FacadeSendNoticeManagerDealerRequest(command);
                    return;
                }
                else
                {
                    command.FlagConfirm = false;
                    command.Notice = "RD07";
                    this.AddRequestDealerToInvestor(command);
                    command.AgentCode = "system";
                    command.Answer = "Requote";
                    TradingServer.Facade.FacadeSendNoticeManagerDealerRequest(command);
                    TradingServer.Facade.FacadeAddNewSystemLog(3, "'" + command.Request.Investor.Code + "': system requote " + command.LogRequestSuper(barBid.Low, barBid.High), "Requote", "", "system");
                    return;
                }
            }
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="symbol"></param>
 /// <returns></returns>
 internal ProcessQuoteLibrary.Business.BarTick GetCandlesTwoM(string symbol)
 {
     ProcessQuoteLibrary.Business.BarTick bar = new ProcessQuoteLibrary.Business.BarTick();
     if (CandlesOffline.ContainsKey(symbol))
     {
         bar = CandlesOffline[symbol];
     }
     if (bar.Low == 0 | bar.High == 0)
     {
         bar = ProcessQuoteLibrary.Business.QuoteProcess.GetCandles(1, symbol);
     }
     else
     {
         ProcessQuoteLibrary.Business.BarTick temp = new ProcessQuoteLibrary.Business.BarTick();
         temp = ProcessQuoteLibrary.Business.QuoteProcess.GetCandles(1, symbol);
         if (temp.High > bar.High)
         {
             bar.High = temp.High;
         }
         if (temp.HighAsk > bar.HighAsk)
         {
             bar.HighAsk = temp.HighAsk;
         }
         if (temp.Low < bar.Low)
         {
             bar.Low = temp.Low;
         }
         if (temp.LowAsk < bar.LowAsk)
         {
             bar.LowAsk = temp.LowAsk;
         }
     }
     return bar;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="temp"></param>
 internal void ArchiveCandlesOffline(ProcessQuoteLibrary.Business.BarTick temp)
 {
     ProcessQuoteLibrary.Business.BarTick bar = new ProcessQuoteLibrary.Business.BarTick();
     bar.Symbol = temp.Symbol;
     bar.High = temp.High;
     bar.Low = temp.Low;
     bar.HighAsk = temp.HighAsk;
     bar.LowAsk = temp.LowAsk;
     if (CandlesOffline.ContainsKey(bar.Symbol))
     {
         CandlesOffline[bar.Symbol] = bar;
     }
     else
     {
         CandlesOffline.Add(bar.Symbol, bar);
     }
 }
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        internal List<Business.Symbol> GetAllSymbol()
        {
            List<Business.Symbol> Result = new List<Business.Symbol>();
            List<Business.Tick> listTickTemp = new List<Business.Tick>();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.SymbolTableAdapter adap = new DSTableAdapters.SymbolTableAdapter();
            DSTableAdapters.TradingConfigTableAdapter adapTradingConfig = new DSTableAdapters.TradingConfigTableAdapter();
            DS.SymbolDataTable tbSymbol = new DS.SymbolDataTable();
            DS.TradingConfigDataTable tbTradingConfig = new DS.TradingConfigDataTable();

            try
            {
                conn.Open();
                adap.Connection = conn;
                adapTradingConfig.Connection = conn;
                tbSymbol = adap.GetData();

                #region GET TICK FROM SERVER ANOTHER
                try
                {
                    string[] tickData = new string[] { };

                    tickData = Business.Market.client.ServerCommandList("GetTickOnline", "");

                    if (tickData != null)
                    {
                        int countTick = tickData.Count();

                        for (int j = 0; j < countTick; j++)
                        {
                            string message = tickData[j];
                            string[] splipTick = message.Split('▼');
                            if (splipTick.Length == 6)
                            {
                                Business.Tick newTick = new Business.Tick();
                                newTick.Bid = double.Parse(splipTick[0]);
                                newTick.TickTime = DateTime.Parse(splipTick[1]);
                                newTick.SymbolName = splipTick[2];
                                newTick.HighInDay = double.Parse(splipTick[3]);
                                newTick.LowInDay = double.Parse(splipTick[4]);
                                newTick.Status = splipTick[5];

                                listTickTemp.Add(newTick);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {

                }
                #endregion

                if (tbSymbol != null)
                {
                    int count = tbSymbol.Count;
                    for (int i = 0; i < count; i++)
                    {
                        if (tbSymbol[i].RefSymbolID == -1)
                        {
                            Business.Symbol newSymbol = new Business.Symbol();
                            newSymbol.Name = tbSymbol[i].Name;
                            newSymbol.SymbolID = tbSymbol[i].SymbolID;
                            newSymbol.SecurityID = tbSymbol[i].SecurityID;

                            #region GET SPREAD DIFFERENCE SET TO SPREAD DIFFERENCE OF SYMBOL
                            if (Business.Market.IGroupSecurityList != null)
                            {
                                int countIGroupSecurity = Business.Market.IGroupSecurityList.Count;
                                for (int n = 0; n < countIGroupSecurity; n++)
                                {
                                    if (Business.Market.IGroupSecurityList[n].SecurityID == newSymbol.SecurityID)
                                    {
                                        if (Business.Market.IGroupSecurityList[n].IGroupSecurityConfig != null)
                                        {
                                            int countIGroupSecurityConfig = Business.Market.IGroupSecurityList[n].IGroupSecurityConfig.Count;
                                            for (int m = 0; m < countIGroupSecurityConfig; m++)
                                            {
                                                if (Business.Market.IGroupSecurityList[n].IGroupSecurityConfig[m].Code == "B04")
                                                {
                                                    newSymbol.SpreadDifference = double.Parse(Business.Market.IGroupSecurityList[n].IGroupSecurityConfig[m].NumValue);
                                                    break;
                                                }
                                            }
                                        }
                                        break;
                                    }
                                }
                            }
                            #endregion

                            newSymbol.RefSymbol = this.GetSymbolReference(newSymbol.SymbolID, tbSymbol);
                            //newSymbol.ParameterItems = DBWSymbol.TradingConfigInstance.GetParameterItemBySymbolID(tbSymbol[i].SymbolID);

                            tbTradingConfig = adapTradingConfig.GetTradingConfigBySymbolID(tbSymbol[i].SymbolID);

                            if (tbTradingConfig != null)
                            {
                                int countTradingConfig = tbTradingConfig.Count;
                                for (int j = 0; j < countTradingConfig; j++)
                                {
                                    Business.ParameterItem newParameter = new Business.ParameterItem();
                                    newParameter.ParameterItemID = tbTradingConfig[j].TradingConfigID;
                                    newParameter.BoolValue = tbTradingConfig[j].BoolValue;
                                    newParameter.Code = tbTradingConfig[j].Code;
                                    newParameter.DateValue = tbTradingConfig[j].DateValue;
                                    newParameter.NumValue = tbTradingConfig[j].NumValue;
                                    newParameter.SecondParameterID = tbTradingConfig[j].SymbolID;
                                    newParameter.StringValue = tbTradingConfig[j].StringValue;
                                    newParameter.Name = tbTradingConfig[j].Name;

                                    if (newSymbol.ParameterItems == null)
                                        newSymbol.ParameterItems = new List<Business.ParameterItem>();

                                    newSymbol.ParameterItems.Add(newParameter);

                                    #region GET DIGIT SET TO DIGIT OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S003")
                                    {
                                        int Digit = 0;
                                        int.TryParse(tbTradingConfig[j].NumValue, out Digit);
                                        newSymbol.Digit = Digit;
                                    }
                                    #endregion

                                    #region GET CURRENCY SET TO CURRENCY OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S007")
                                    {
                                        newSymbol.Currency = tbTradingConfig[j].StringValue;
                                    }
                                    #endregion

                                    #region GET ISTRADE SET TO TRADE OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S008")
                                    {
                                        newSymbol.Trade = tbTradingConfig[j].StringValue;
                                    }
                                    #endregion

                                    #region GET SPREAD BY DEFAULT SET TO SPREAD BY DEFAULT OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S013")
                                    {
                                        double SpreadByDefault = 0;
                                        double.TryParse(tbTradingConfig[j].NumValue, out SpreadByDefault);
                                        newSymbol.SpreadByDefault = SpreadByDefault;
                                    }
                                    #endregion

                                    #region GET LONG ONLY SET TO LONG ONLY OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S014")
                                    {
                                        if (tbTradingConfig[j].BoolValue == 0)
                                        {
                                            newSymbol.LongOnly = false;
                                        }
                                        else
                                        {
                                            newSymbol.LongOnly = true;
                                        }
                                    }
                                    #endregion

                                    #region GET LIMIT STOP LEVEL SET TO LIMIT STOP LEVEL OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S015")
                                    {
                                        int LimitLevel = 0;
                                        int.TryParse(tbTradingConfig[j].NumValue, out LimitLevel);
                                        newSymbol.LimitLevel = LimitLevel;
                                    }
                                    if (tbTradingConfig[j].Code == "S046")
                                    {
                                        int StopLevel = 0;
                                        int.TryParse(tbTradingConfig[j].NumValue, out StopLevel);
                                        newSymbol.StopLevel = StopLevel;
                                    }
                                    if (tbTradingConfig[j].Code == "S047")
                                    {
                                        int SLTP = 0;
                                        int.TryParse(tbTradingConfig[j].NumValue, out SLTP);
                                        newSymbol.StopLossTakeProfitLevel = SLTP;
                                    }
                                    #endregion

                                    #region GET SPREAD BALANCE SET TO SPREAD BALANCE OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S016")
                                    {
                                        double SpreadBalace = 0;
                                        if (tbTradingConfig[j].NumValue != "NaN")
                                        {
                                            double.TryParse(tbTradingConfig[j].NumValue, out SpreadBalace);
                                        }

                                        newSymbol.SpreadBalace = SpreadBalace;
                                    }
                                    #endregion

                                    #region GET FREEZE LEVEL SET TO FREEZE LEVEL TO SYMBOL
                                    if (tbTradingConfig[j].Code == "S017")
                                    {
                                        int FreezeLevel = 0;
                                        int.TryParse(tbTradingConfig[j].NumValue, out FreezeLevel);
                                        newSymbol.FreezeLevel = FreezeLevel;
                                    }
                                    #endregion

                                    #region GET ALLOW READ TIME SET TO ALLOW READ TIME OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S018")
                                    {
                                        if (tbTradingConfig[j].BoolValue == 0)
                                        {
                                            newSymbol.AllowReadTime = false;
                                        }
                                        else
                                        {
                                            newSymbol.AllowReadTime = true;
                                        }
                                    }
                                    #endregion

                                    #region GET FILTTRATIONS LEVEL SET TO FILTRATIONS OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S020")
                                    {
                                        int FiltrationLevel = 0;
                                        int.TryParse(tbTradingConfig[j].NumValue, out FiltrationLevel);
                                        newSymbol.FiltrationsLevel = FiltrationLevel;
                                    }
                                    #endregion

                                    #region GET AUTO LIMIT SET TO AUTO LIMIT OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S021")
                                    {
                                        newSymbol.AutoLimit = tbTradingConfig[j].StringValue;
                                    }
                                    #endregion

                                    #region GET FILTER SET TO FILTER OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S022")
                                    {
                                        int Filter = 0;
                                        int.TryParse(tbTradingConfig[j].NumValue, out Filter);
                                        newSymbol.Filter = Filter;
                                    }
                                    #endregion

                                    #region GET CONTRACT SIZE SET TO CONTRACT SIZE OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S025")
                                    {
                                        double ContractSize = 0;
                                        double.TryParse(tbTradingConfig[j].NumValue, out ContractSize);
                                        newSymbol.ContractSize = ContractSize;
                                    }
                                    #endregion

                                    #region GET TICK SIZE SET TO TICK SIZE OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S029")
                                    {
                                        double TickSize = 0;
                                        double.TryParse(tbTradingConfig[j].NumValue, out TickSize);
                                        newSymbol.TickSize = TickSize;
                                    }
                                    #endregion

                                    #region GET TICK PRICE SET TO TICK PRICE OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S030")
                                    {
                                        double TickPrice = 0;
                                        double.TryParse(tbTradingConfig[j].NumValue, out TickPrice);
                                        newSymbol.TickPrice = TickPrice;
                                    }
                                    #endregion

                                    #region GET PROFIT CALCULATION SET TO PROFIT CALCULATION OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S033")
                                    {
                                        newSymbol.ProfitCalculation = tbTradingConfig[j].StringValue;
                                    }
                                    #endregion

                                    #region GET ISHEDGED SET TO ISHEDGED OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S034")
                                    {
                                        if (tbTradingConfig[j].BoolValue == 0)
                                        {
                                            newSymbol.IsHedged = false;
                                        }
                                        else
                                        {
                                            newSymbol.IsHedged = true;
                                        }
                                    }
                                    #endregion

                                    #region GET TIME CLOSE ONLY OF SYMBOL FUTURE
                                    if (tbTradingConfig[j].Code == "S044")
                                    {
                                        newSymbol.TimeCloseOnly = tbTradingConfig[j].DateValue;
                                    }
                                    #endregion

                                    #region GET TIME EXP OF SYMBOL FUTURE
                                    if (tbTradingConfig[j].Code == "S045")
                                    {
                                        newSymbol.TimeExp = tbTradingConfig[j].DateValue;
                                    }
                                    #endregion

                                    #region GET APPLY SPREAD OF SYMBOL
                                    if (tbTradingConfig[j].Code == "S050")
                                    {
                                        if (tbTradingConfig[j].BoolValue == 1)
                                        {
                                            newSymbol.ApplySpread = true;
                                        }
                                    }
                                    #endregion

                                    #region GET FREEZE MARGIN
                                    if (tbTradingConfig[j].Code == "S051")
                                    {
                                        bool useFreezeLevel = false;
                                        if (tbTradingConfig[j].BoolValue == 1)
                                            useFreezeLevel = true;

                                        newSymbol.IsEnableFreezeMargin = useFreezeLevel;
                                    }
                                    #endregion

                                    #region GET USE FREEZE MARGIN
                                    if (tbTradingConfig[j].Code == "S052")
                                    {
                                        double freezeMargin = 0;
                                        double.TryParse(tbTradingConfig[j].NumValue.ToString(), out freezeMargin);
                                        newSymbol.FreezeMargin = freezeMargin;
                                    }
                                    #endregion

                                    #region GET FREEZE MARGIN HEDGED
                                    if (tbTradingConfig[j].Code == "S053")
                                    {
                                        double freezeMarginH = 0;
                                        double.TryParse(tbTradingConfig[j].NumValue, out freezeMarginH);
                                        newSymbol.FreezeMarginHedged = freezeMarginH;
                                    }
                                    #endregion

                                    #region GET MARGIN HEDGED
                                    if (tbTradingConfig[j].Code == "S028")
                                    {
                                        double marginH = 0;
                                        double.TryParse(tbTradingConfig[j].NumValue, out marginH);
                                        newSymbol.MarginHedged = marginH;
                                    }
                                    #endregion

                                    #region GET INIT MARGIN
                                    if (tbTradingConfig[j].Code == "S026")
                                    {
                                        double initMargin = 0;
                                        double.TryParse(tbTradingConfig[j].NumValue, out initMargin);
                                        newSymbol.InitialMargin = initMargin;
                                    }
                                    #endregion
                                }
                            }

                            bool flagTick = false;
                            if (listTickTemp != null)
                            {
                                int countTick = listTickTemp.Count;
                                for (int j = 0; j < countTick; j++)
                                {
                                    if (listTickTemp[j].SymbolName == tbSymbol[i].Name)
                                    {
                                        if (newSymbol.TickValue == null)
                                            newSymbol.TickValue = new Business.Tick();

                                        //newSymbol.TickValue.Ask = Math.Round(newSymbol.CreateAskPrices(listTickTemp[j].Bid, newSymbol.SpreadByDefault, newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString())), newSymbol.Digit);

                                        //Apply Spread Change Function CreateAskPrices
                                        newSymbol.TickValue.Ask = Math.Round(newSymbol.CreateAskPrices(newSymbol.Digit,int.Parse(newSymbol.SpreadDifference.ToString()),listTickTemp[j].Ask),newSymbol.Digit);

                                        newSymbol.TickValue.Bid = listTickTemp[j].Bid;
                                        newSymbol.TickValue.Status = listTickTemp[j].Status;
                                        newSymbol.TickValue.SymbolID = newSymbol.SymbolID;
                                        newSymbol.TickValue.SymbolName = newSymbol.Name;
                                        newSymbol.TickValue.TickTime = listTickTemp[j].TickTime;
                                        newSymbol.TickValue.TimeCurrent = listTickTemp[j].TickTime;
                                        newSymbol.TickValue.HighInDay = listTickTemp[j].HighInDay;
                                        newSymbol.TickValue.LowInDay = listTickTemp[j].LowInDay;

                                        newSymbol.ArchiveTick(newSymbol.TickValue);

                                        #region BUILD HIGH LOW
                                        if (newSymbol.TickCurrent == null)
                                            newSymbol.TickCurrent = new Business.TickLog();

                                        newSymbol.TickCurrent.Close = listTickTemp[j].Bid;
                                        newSymbol.TickCurrent.Date = listTickTemp[j].TickTime;
                                        newSymbol.TickCurrent.HighBid = listTickTemp[j].HighInDay;

                                        newSymbol.TickCurrent.LowBid = listTickTemp[j].LowInDay;
                                        newSymbol.TickCurrent.Name = listTickTemp[j].SymbolName;
                                        newSymbol.TickCurrent.Open = listTickTemp[j].Bid;

                                        //newSymbol.TickValue.HighAsk = Math.Round(newSymbol.CreateAskPrices(listTickTemp[j].HighInDay, newSymbol.SpreadByDefault, newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString())), newSymbol.Digit);
                                        newSymbol.TickValue.HighAsk = Math.Round(newSymbol.CreateAskPrices(newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString()), listTickTemp[j].HighAsk), newSymbol.Digit);

                                        //newSymbol.TickValue.HighAsk = ResultDataLog.HighAsk;
                                        //newSymbol.TickValue.HighInDay = ResultDataLog.High;
                                        //newSymbol.TickValue.LowAsk = Math.Round(newSymbol.CreateAskPrices(listTickTemp[j].LowInDay, newSymbol.SpreadByDefault, newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString())), newSymbol.Digit);
                                        newSymbol.TickValue.LowAsk = Math.Round(newSymbol.CreateAskPrices(newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString()), listTickTemp[j].LowAsk), newSymbol.Digit);
                                        //newSymbol.TickValue.LowAsk = ResultDataLog.LowAsk;
                                        //newSymbol.TickValue.LowInDay = ResultDataLog.Low;

                                        newSymbol.TickCurrent.HighAsk = newSymbol.TickValue.HighAsk;
                                        newSymbol.TickCurrent.LowAsk = newSymbol.TickValue.LowAsk;

                                        int tickID = ProcessQuoteLibrary.FacadeDataLog.AddNewDataLog(listTickTemp[j].TickTime, listTickTemp[j].Bid, listTickTemp[j].HighInDay,
                                            listTickTemp[j].LowInDay, listTickTemp[j].HighAsk, listTickTemp[j].LowAsk, listTickTemp[j].Bid, listTickTemp[j].SymbolName);

                                        newSymbol.TickCurrent.ID = tickID;
                                        newSymbol.TickValue.ID = tickID;
                                        #endregion

                                        flagTick = true;
                                        break;
                                    }
                                }
                            }

                            if (!flagTick)
                            {
                                #region GET TICK OF SYMBOL
                                ProcessQuoteLibrary.Business.BarTick resultTick = ProcessQuoteLibrary.FacadeDataLog.FacadeGetClosePriceBySymbol(newSymbol.Name);
                                if (resultTick != null && resultTick.ID > 0)
                                {
                                    if (newSymbol.TickValue == null)
                                        newSymbol.TickValue = new Business.Tick();

                                    //newSymbol.TickValue.Ask = Math.Round(newSymbol.CreateAskPrices(resultTick.Close, newSymbol.SpreadByDefault, newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString())), newSymbol.Digit);
                                    newSymbol.TickValue.Ask = Math.Round(newSymbol.CreateAskPrices(newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString()), resultTick.Close), newSymbol.Digit);
                                    newSymbol.TickValue.Bid = resultTick.Close;
                                    newSymbol.TickValue.Status = "up";
                                    newSymbol.TickValue.SymbolID = newSymbol.SymbolID;
                                    newSymbol.TickValue.SymbolName = newSymbol.Name;
                                    newSymbol.TickValue.TickTime = resultTick.Time;
                                    newSymbol.TickValue.TimeCurrent = resultTick.Time;

                                    newSymbol.ArchiveTick(newSymbol.TickValue);
                                }
                                else
                                {
                                    if (newSymbol.TickValue == null)
                                        newSymbol.TickValue = new Business.Tick();

                                    //newSymbol.TickValue.Ask = Math.Round(newSymbol.CreateAskPrices(resultTick.Close, newSymbol.SpreadByDefault, newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString())), newSymbol.Digit);
                                    newSymbol.TickValue.Ask = 0;
                                    newSymbol.TickValue.Bid = 0;
                                    newSymbol.TickValue.Status = "down";
                                    newSymbol.TickValue.SymbolID = newSymbol.SymbolID;
                                    newSymbol.TickValue.SymbolName = newSymbol.Name;
                                    newSymbol.TickValue.TickTime = DateTime.Now;
                                    newSymbol.TickValue.TimeCurrent = DateTime.Now;
                                }
                                #endregion

                                #region GET DATA HIGH LOW IN DAY SET TO DATA HIGH LOW OF SYMBOL
                                ProcessQuoteLibrary.Business.BarTick ResultDataLog = new ProcessQuoteLibrary.Business.BarTick();
                                ResultDataLog = ProcessQuoteLibrary.FacadeDataLog.FacadeGetDataLogByName(newSymbol.Name);
                                if (ResultDataLog.Time.Day == DateTime.Now.Day)
                                {
                                    if (ResultDataLog != null && ResultDataLog.High != 0)
                                    {
                                        if (newSymbol.TickValue == null)
                                            newSymbol.TickValue = new Business.Tick();

                                        if (newSymbol.TickCurrent == null)
                                            newSymbol.TickCurrent = new Business.TickLog();

                                        newSymbol.TickCurrent.Close = ResultDataLog.Close;
                                        newSymbol.TickCurrent.Date = ResultDataLog.Time;
                                        newSymbol.TickCurrent.HighBid = ResultDataLog.High;

                                        newSymbol.TickCurrent.ID = ResultDataLog.ID;
                                        newSymbol.TickValue.ID = ResultDataLog.ID;
                                        newSymbol.TickCurrent.LowBid = ResultDataLog.Low;
                                        newSymbol.TickCurrent.Name = ResultDataLog.Symbol;
                                        newSymbol.TickCurrent.Open = ResultDataLog.Open;

                                        //newSymbol.TickValue.HighAsk = Math.Round(newSymbol.CreateAskPrices(resultTick.High, newSymbol.SpreadByDefault, newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString())), newSymbol.Digit);
                                        newSymbol.TickValue.HighAsk = Math.Round(newSymbol.CreateAskPrices(newSymbol.Digit,int.Parse(newSymbol.SpreadDifference.ToString()),resultTick.High));
                                        //newSymbol.TickValue.HighAsk = ResultDataLog.HighAsk;
                                        newSymbol.TickValue.HighInDay = ResultDataLog.High;
                                        //newSymbol.TickValue.LowAsk = Math.Round(newSymbol.CreateAskPrices(resultTick.Low, newSymbol.SpreadByDefault, newSymbol.Digit, int.Parse(newSymbol.SpreadDifference.ToString())), newSymbol.Digit);
                                        newSymbol.TickValue.LowAsk = Math.Round(newSymbol.CreateAskPrices(newSymbol.Digit,int.Parse(newSymbol.SpreadDifference.ToString()),resultTick.Low),newSymbol.Digit);
                                        //newSymbol.TickValue.LowAsk = ResultDataLog.LowAsk;
                                        newSymbol.TickValue.LowInDay = ResultDataLog.Low;

                                        newSymbol.TickCurrent.HighAsk = ResultDataLog.HighAsk;
                                        newSymbol.TickCurrent.LowAsk = ResultDataLog.LowAsk;
                                    }
                                }
                                #endregion
                            }

                            #region FIND IMARKET AREA AND ADD TO SYMBOL
                            //Find IMarketArea
                            if (Business.Market.MarketArea != null)
                            {
                                int countMarketArea = Business.Market.MarketArea.Count;
                                for (int j = 0; j < countMarketArea; j++)
                                {
                                    if (Business.Market.MarketArea[j].IMarketAreaID == tbSymbol[i].MarketAreaID)
                                    {
                                        newSymbol.MarketAreaRef = Business.Market.MarketArea[j];

                                        //Add Symbol To MarketArea
                                        if (Business.Market.MarketArea[j].ListSymbol == null)
                                            Business.Market.MarketArea[j].ListSymbol = new List<Business.Symbol>();

                                        Business.Market.MarketArea[j].ListSymbol.Add(newSymbol);

                                        break;
                                    }
                                }
                            }
                            #endregion

                            Result.Add(newSymbol);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                adapTradingConfig.Connection.Close();
                conn.Close();
            }

            return Result;
        }