/// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        internal List<Business.Security> GetAllSecurity()
        {
            List<Business.Security> Result = new List<Business.Security>();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.SecurityTableAdapter adap = new DSTableAdapters.SecurityTableAdapter();
            DSTableAdapters.SecurityConfigTableAdapter adapSecurityConfig = new DSTableAdapters.SecurityConfigTableAdapter();

            DSTableAdapters.SymbolTableAdapter adapSymbol = new DSTableAdapters.SymbolTableAdapter();
            DSTableAdapters.TradingConfigTableAdapter adapTradingConfig = new DSTableAdapters.TradingConfigTableAdapter();

            DS.SymbolDataTable tbSymbol = new DS.SymbolDataTable();
            DS.TradingConfigDataTable tbTradingConfig = new DS.TradingConfigDataTable();
            DS.SecurityDataTable tbSecurity = new DS.SecurityDataTable();
            DS.SecurityConfigDataTable tbSecurityConfig = new DS.SecurityConfigDataTable();

            try
            {
                conn.Open();
                adap.Connection = conn;
                adapSecurityConfig.Connection = conn;
                adapSymbol.Connection = conn;
                adapTradingConfig.Connection = conn;

                tbSecurity = adap.GetData();

                if (tbSecurity != null)
                {
                    int count = tbSecurity.Count;
                    for (int i = 0; i < count; i++)
                    {
                        Business.Security newSecurity = new Business.Security();
                        newSecurity.ParameterItems = new List<Business.ParameterItem>();
                        newSecurity.SymbolGroup = new List<Business.Symbol>();

                        newSecurity.SecurityID = tbSecurity[i].SecurityID;
                        newSecurity.Name = tbSecurity[i].Name;
                        newSecurity.Description = tbSecurity[i].Description;
                        newSecurity.MarketAreaID = tbSecurity[i].MarketAreaID;

                        #region GET SECURITY CONFIG BY SECURITY ID
                        //GET SECURITY CONFIG BY SECURITY ID
                        tbSecurityConfig = adapSecurityConfig.GetSecurityConfigBySecurityID(newSecurity.SecurityID);

                        if (tbSecurityConfig != null)
                        {
                            int countSecurityConfig = tbSecurityConfig.Count;
                            for (int j = 0; j < countSecurityConfig; j++)
                            {
                                Business.ParameterItem newParameterItem = new Business.ParameterItem();
                                newParameterItem.ParameterItemID = tbSecurityConfig[j].SecurityConfigID;
                                newParameterItem.SecondParameterID = tbSecurityConfig[j].SecurityID;
                                newParameterItem.Name = tbSecurityConfig[j].Name;
                                newParameterItem.Code = tbSecurityConfig[j].Code;
                                newParameterItem.NumValue = tbSecurityConfig[j].NumValue;
                                newParameterItem.StringValue = tbSecurityConfig[j].StringValue;
                                newParameterItem.DateValue = tbSecurityConfig[j].DateValue;
                                newParameterItem.BoolValue = tbSecurityConfig[j].BoolValue;

                                Result[i].ParameterItems.Add(newParameterItem);
                            }
                        }
                        #endregion

                        #region GET SYMBOL BY SECURITY ID
                        tbSymbol = adapSymbol.GetSymbolBySecurityID(newSecurity.SecurityID);
                        if (tbSymbol != null)
                        {
                            int countSymbol = tbSymbol.Count;
                            for (int j = 0; j < countSymbol; j++)
                            {
                                Business.Symbol newSymbol = new Business.Symbol();
                                newSymbol.ParameterItems = new List<Business.ParameterItem>();

                                if (Business.Market.MarketArea != null)
                                {
                                    int countMarket = Business.Market.MarketArea.Count;
                                    for (int n = 0; n < countMarket; n++)
                                    {
                                        if (Business.Market.MarketArea[n].IMarketAreaID == tbSymbol[j].MarketAreaID)
                                        {
                                            newSymbol.MarketAreaRef = Business.Market.MarketArea[n];
                                            break;
                                        }
                                    }
                                }

                                newSymbol.Name = tbSymbol[j].Name;
                                newSymbol.SecurityID = tbSymbol[j].SecurityID;
                                newSymbol.SymbolID = tbSymbol[j].SymbolID;

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

                                        newSymbol.ParameterItems.Add(newParameter);
                                    }
                                }

                                newSecurity.SymbolGroup.Add(newSymbol);
                            }
                        }
                        #endregion

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

            return Result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="ListSymbol"></param>
        /// <param name="SymbolID"></param>
        internal Business.Symbol FindSymbolReference(List<Business.Symbol> ListSymbol, Business.OpenTrade objOpenTrade, int SymbolID)
        {
            Business.Symbol Result = new Business.Symbol();
            bool Flag = false;
            if (ListSymbol != null)
            {
                int count = ListSymbol.Count;
                for (int i = 0; i < count; i++)
                {
                    if (ListSymbol[i].SymbolID == SymbolID)
                    {
                        Result = ListSymbol[i];
                        objOpenTrade.Symbol = ListSymbol[i];

                        Flag = true;
                        break;
                    }

                    if (Flag == false)
                    {
                        if (ListSymbol[i].RefSymbol != null)
                        {
                            this.FindSymbolReference(ListSymbol[i].RefSymbol, objOpenTrade, SymbolID);
                        }
                    }
                }
            }
            return Result;
        }
Example #3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="SymbolID"></param>
        /// <param name="SecurityID"></param>
        /// <param name="RefSymbolID"></param>
        /// <param name="MarketAreaID"></param>
        /// <param name="SymbolName"></param>
        internal void AddSymbolUpdateToSymbolList(int SymbolID, int SecurityID, int RefSymbolID, int MarketAreaID, string SymbolName)
        {
            #region Add Symbol Update To Symbol List In Class Market
            if (Market.SymbolList != null)
            {
                int count = Market.SymbolList.Count;
                for (int i = 0; i < count; i++)
                {
                    if (Market.SymbolList[i].SymbolID == RefSymbolID)
                    {
                        Business.Symbol newSymbol = new Business.Symbol();
                        newSymbol.Name = SymbolName;
                        newSymbol.SymbolID = SymbolID;
                        if (Market.SymbolList[i].RefSymbol == null)
                            Market.SymbolList[i].RefSymbol = new List<Business.Symbol>();

                        Market.SymbolList[i].RefSymbol.Add(newSymbol);

                        break;
                    }
                    else
                    {
                        //Call Function Find In Reference Symbol
                        this.AddSymbolUpdateReference(SymbolID, RefSymbolID, SymbolName, Market.SymbolList[i].RefSymbol);
                    }
                }
            }
            #endregion

            #region Add Symbol Update To QuoteList In Class Market
            if (Market.QuoteList != null)
            {
                int count = Market.QuoteList.Count;
                for (int i = 0; i < count; i++)
                {
                    if (Market.QuoteList[i].RefSymbol!= null)
                    {
                        int countRef = Market.QuoteList[i].RefSymbol.Count;
                        for (int j = 0; j < countRef; j++)
                        {
                            if (Market.QuoteList[i].RefSymbol[j].SymbolID == RefSymbolID)
                            {
                                Business.Symbol newSymbol = new Business.Symbol();
                                newSymbol.Name = SymbolName;
                                newSymbol.SymbolID = SymbolID;
                                if (Market.QuoteList[i].RefSymbol[j].RefSymbol == null)
                                    Market.QuoteList[i].RefSymbol[j].RefSymbol = new List<Symbol>();

                                Market.QuoteList[i].RefSymbol[j].RefSymbol.Add(newSymbol);
                                break;
                            }
                            else
                            {
                                //Call Function Find In Reference Symbol
                                this.AddSymbolUpdateReference(SymbolID, RefSymbolID, SymbolName, Market.QuoteList[i].RefSymbol[j].RefSymbol);
                            }
                        }
                    }
                }
            }
            #endregion
        }
Example #4
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="objSymbol"></param>
        internal int AddNewSymbol(int SecurityID, int RefSymbolID, int MarketAreaID, string SymbolName)
        {
            int Result = -1;
            Result = Symbol.DBWSymbolInstance.AddNewSymbol(SecurityID, RefSymbolID, MarketAreaID, SymbolName);

            #region Add Symbol To Symbol List
            if (Result > 0)
            {
                if (RefSymbolID > 0)
                {
                    this.AddNewSymbolWithRef(Result, SymbolName, RefSymbolID, MarketAreaID, Market.SymbolList);
                    int count = Market.QuoteList.Count;
                    for (int i = 0; i < count; i++)
                    {
                        this.AddNewSymbolWithRef(Result, SymbolName, RefSymbolID, MarketAreaID, Market.QuoteList[i].RefSymbol);
                    }
                }
                else
                {
                    //add to symbol list
                    Business.Symbol newSymbol = new Business.Symbol();
                    newSymbol.SymbolID = Result;
                    newSymbol.Name = SymbolName;

                    if (!newSymbol.IsQuote)
                        newSymbol.IsQuote = true;

                    if (!newSymbol.IsTrade)
                        newSymbol.IsTrade = true;

                    newSymbol.SecurityID = SecurityID;

                    newSymbol.TickValue = new Tick();
                    #region Find Market Area Of Symbol
                    //Find Market Area
                    if (Market.MarketArea != null)
                    {
                        int count = Market.MarketArea.Count;
                        for (int i = 0; i < count; i++)
                        {
                            if (Market.MarketArea[i].IMarketAreaID == MarketAreaID)
                            {
                                newSymbol.MarketAreaRef = Market.MarketArea[i];

                                if (Business.Market.MarketArea[i].ListSymbol == null)
                                    Business.Market.MarketArea[i].ListSymbol = new List<Symbol>();

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

                                break;
                            }
                        }
                    }
                    #endregion

                    Business.QuoteSymbol newQuoteSymbol = new Business.QuoteSymbol();
                    newQuoteSymbol.Name = SymbolName;
                    newQuoteSymbol.RefSymbol = new List<Business.Symbol>();
                    newQuoteSymbol.RefSymbol.Add(newSymbol);

                    Market.SymbolList.Add(newSymbol);
                    Market.QuoteList.Add(newQuoteSymbol);
                }
            }

            return Result;
            #endregion
        }
Example #5
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="SymbolID"></param>
        /// <param name="SymbolName"></param>
        /// <param name="RefSymbolID"></param>
        /// <param name="objSymbol"></param>
        internal void AddNewSymbolWithRef(int SymbolID, string SymbolName, int RefSymbolID,int MarketAreaID, List<Business.Symbol> objSymbol)
        {
            if (objSymbol != null)
            {
                int count = objSymbol.Count;
                for (int i = 0; i < count; i++)
                {
                    if (objSymbol[i].SymbolID == RefSymbolID)
                    {
                        Business.Symbol newSymbol = new Business.Symbol();
                        newSymbol.Name = SymbolName;
                        newSymbol.SymbolID = SymbolID;

                        #region Find Market Area Of Symbol
                        //Find Market Area
                        if (Market.MarketArea != null)
                        {
                            int countMarketArea = Market.MarketArea.Count;
                            for (int j = 0; j < countMarketArea; j++)
                            {
                                if (Market.MarketArea[j].IMarketAreaID == MarketAreaID)
                                {
                                    newSymbol.MarketAreaRef = Market.MarketArea[j];
                                }
                            }
                        }
                        #endregion

                        if (objSymbol[i].RefSymbol == null)
                            objSymbol[i].RefSymbol = new List<Business.Symbol>();

                        objSymbol[i].RefSymbol.Add(newSymbol);

                        break;
                    }
                    else
                    {
                        if (objSymbol[i].RefSymbol != null)
                        {
                            for (int j = 0; j < objSymbol[i].RefSymbol.Count; j++)
                            {
                                if (objSymbol[i].RefSymbol[j].SymbolID == RefSymbolID)
                                {
                                    Business.Symbol newSymbol = new Business.Symbol();
                                    newSymbol.Name = SymbolName;
                                    newSymbol.SymbolID = SymbolID;

                                    #region Find Market Of Symbol
                                    //Find Market Area
                                    if (Market.MarketArea != null)
                                    {
                                        int countMarketArea = Market.MarketArea.Count;
                                        for (int n = 0; n < countMarketArea; n++)
                                        {
                                            if (Market.MarketArea[n].IMarketAreaID == MarketAreaID)
                                            {
                                                newSymbol.MarketAreaRef = Market.MarketArea[n];
                                                break;
                                            }
                                        }
                                    }
                                    #endregion

                                    if (objSymbol[i].RefSymbol[j].RefSymbol == null)
                                        objSymbol[i].RefSymbol[j].RefSymbol = new List<Business.Symbol>();

                                    objSymbol[i].RefSymbol[j].RefSymbol.Add(newSymbol);

                                    break;
                                }
                                else
                                {
                                    if (objSymbol[i].RefSymbol[j].RefSymbol != null)
                                    {
                                        AddNewSymbolWithRef(SymbolID, SymbolName, RefSymbolID, MarketAreaID, objSymbol[i].RefSymbol[j].RefSymbol);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Example #6
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="SymbolID"></param>
        /// <param name="RefSymbolID"></param>
        /// <param name="SymbolName"></param>
        /// <param name="ListSymbol"></param>
        internal void AddSymbolUpdateReference(int SymbolID, int RefSymbolID, string SymbolName, List<Business.Symbol> ListSymbol)
        {
            if (ListSymbol != null)
            {
                int count = ListSymbol.Count;
                for (int i = 0; i < count; i++)
                {
                    if (ListSymbol[i].SymbolID == RefSymbolID)
                    {
                        Business.Symbol newSymbol = new Business.Symbol();
                        newSymbol.Name = SymbolName;
                        newSymbol.SymbolID = SymbolID;
                        if (ListSymbol[i].RefSymbol == null)
                            ListSymbol[i].RefSymbol = new List<Business.Symbol>();

                        ListSymbol[i].RefSymbol.Add(newSymbol);

                        break;
                    }
                    else
                    {
                        if (ListSymbol[i].RefSymbol != null)
                        {
                            int countRef = ListSymbol[i].RefSymbol.Count;
                            for (int j = 0; j < countRef; j++)
                            {
                                if (ListSymbol[i].RefSymbol[j].SymbolID == RefSymbolID)
                                {
                                    Business.Symbol newSymbol = new Business.Symbol();
                                    newSymbol.Name = SymbolName;
                                    newSymbol.SymbolID = SymbolID;

                                    if (ListSymbol[i].RefSymbol[j].RefSymbol == null)
                                        ListSymbol[i].RefSymbol[j].RefSymbol = new List<Business.Symbol>();

                                    ListSymbol[i].RefSymbol[j].RefSymbol.Add(newSymbol);

                                    break;
                                }
                                else
                                {
                                    this.AddSymbolUpdateReference(SymbolID, RefSymbolID, SymbolName, ListSymbol[i].RefSymbol[j].RefSymbol);
                                }
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Symbol"></param>
        /// <returns></returns>
        internal List<Business.Symbol> GetSymbolReference(int SymbolID,DS.SymbolDataTable objSymbol)
        {
            List<Business.Symbol> Result = new List<Business.Symbol>();
            int count = objSymbol.Count;
            for (int i = 0; i < count; i++)
            {
                if (objSymbol[i].RefSymbolID > -1)
                {
                    if (objSymbol[i].RefSymbolID == SymbolID)
                    {
                        Business.Symbol newSymbol = new Business.Symbol();
                        newSymbol.Name = objSymbol[i].Name;
                        newSymbol.SymbolID = objSymbol[i].SymbolID;
                        newSymbol.SecurityID = objSymbol[i].SecurityID;
                        newSymbol.RefSymbol = this.GetSymbolReference(newSymbol.SymbolID, objSymbol);
                        newSymbol.ParameterItems = DBWSymbol.TradingConfigInstance.GetParameterItemBySymbolID(objSymbol[i].SymbolID);

                        //Find IMarketArea
                        if (Business.Market.MarketArea != null)
                        {
                            int countMarketArea = Business.Market.MarketArea.Count;
                            for (int j = 0; j < count; j++)
                            {
                                if (Business.Market.MarketArea[j].IMarketAreaID == objSymbol[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;
                                }
                            }
                        }

                        Result.Add(newSymbol);
                    }
                }
            }

            return Result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="SecurityID"></param>
        /// <returns></returns>
        internal List<Business.Symbol> GetSymbolBySecurityID(int SecurityID)
        {
            List<Business.Symbol> Result = new List<Business.Symbol>();
            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.GetSymbolBySecurityID(SecurityID);

                if (tbSymbol != null)
                {
                    int count = tbSymbol.Count;
                    for (int i = 0; i < count; i++)
                    {
                        Business.Symbol newSymbol = new Business.Symbol();
                        if (Business.Market.MarketArea != null)
                        {
                            int countMarket = Business.Market.MarketArea.Count;
                            for (int j = 0; j < countMarket; j++)
                            {
                                if (Business.Market.MarketArea[j].IMarketAreaID == tbSymbol[i].MarketAreaID)
                                {
                                    newSymbol.MarketAreaRef = Business.Market.MarketArea[j];
                                    break;
                                }
                            }
                        }

                        newSymbol.Name = tbSymbol[i].Name;
                        newSymbol.SecurityID = tbSymbol[i].SecurityID;
                        newSymbol.SymbolID = tbSymbol[i].SymbolID;
                        newSymbol.RefSymbol = this.GetSymbolByRefSymbolID(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.BoolValue = tbTradingConfig[j].BoolValue;
                                newParameter.Code = tbTradingConfig[j].Code;
                                newParameter.DateValue = tbTradingConfig[j].DateValue;
                                newParameter.NumValue = tbTradingConfig[j].NumValue;
                                newParameter.ParameterItemID = tbTradingConfig[j].TradingConfigID;
                                newParameter.SecondParameterID = tbTradingConfig[j].SymbolID;

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

                                newSymbol.ParameterItems.Add(newParameter);
                            }
                        }

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

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

            return Result;
        }
        /// <summary>
        /// Get Symbol By Ref Symbol ID
        /// </summary>
        /// <param name="ID">int ID</param>
        /// <returns>List<Business.Symbol></returns>
        internal List<Business.Symbol> GetSymbolByRefSymbolID(int ID)
        {
            List<Business.Symbol> listSymbol = new List<Business.Symbol>();

            System.Data.SqlClient.SqlConnection SqlConnection = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.SymbolTableAdapter adap = new DSTableAdapters.SymbolTableAdapter();
            DS.SymbolDataTable tbSymbol = new DS.SymbolDataTable();

            try
            {
                if (SqlConnection.State == System.Data.ConnectionState.Closed)
                {
                    SqlConnection.Open();
                }
                adap.Connection = SqlConnection;
                tbSymbol = adap.GetSymbolByRefSymbolID(ID);

                if (tbSymbol != null)
                {
                    int count = tbSymbol.Count;
                    for (int i = 0; i < count; i++)
                    {
                        Business.Symbol newSymbol = new Business.Symbol();
                        newSymbol.Name = tbSymbol[i].Name;
                        newSymbol.SymbolID = tbSymbol[i].SymbolID;
                        newSymbol.RefSymbol = this.GetSymbolByRefSymbolID(newSymbol.SymbolID);

                        listSymbol.Add(newSymbol);
                    }
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                SqlConnection.Close();
            }

            return listSymbol;
        }
        /// <summary>
        /// Get Symbol By Name
        /// </summary>
        /// <param name="Name">string Name</param>
        /// <returns>List<Business.Symbol></returns>
        internal Business.Symbol GetSymbolByName(string Name)
        {
            Business.Symbol Result = new Business.Symbol();
            System.Data.SqlClient.SqlConnection SqlConnection = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.SymbolTableAdapter adap = new DSTableAdapters.SymbolTableAdapter();
            DS.SymbolDataTable tbSymbol = new DS.SymbolDataTable();

            try
            {
                if (SqlConnection.State == System.Data.ConnectionState.Closed)
                {
                    SqlConnection.Open();
                }
                adap.Connection = SqlConnection;

                tbSymbol= adap.GetSymbolByName(Name);
                if (tbSymbol != null)
                {
                    Result.SymbolID = tbSymbol[0].SymbolID;
                    Result.Name = tbSymbol[0].Name;
                    Result.RefSymbol = this.GetSymbolByRefSymbolID(tbSymbol[0].SymbolID);
                    Result.ParameterItems = DBWSymbol.TradingConfigInstance.GetParameterItemBySymbolID(tbSymbol[0].SymbolID);
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                SqlConnection.Close();
            }

            return Result;
        }
        /// <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;
        }