Пример #1
0
        // *****************************************************************
        // ****                     Constructors                        ****
        // *****************************************************************
        //
        //
        //
        #endregion//Constructors


        #region Public Methods
        // *****************************************************************
        // ****                     Public Methods                      ****
        // *****************************************************************
        public override string GetQuery(DatabaseInfo dataBase)
        {
            TableInfo.InstrumentsTableInfo instrumentTable = dataBase.Instruments;
            TableInfo.ExchangesTableInfo   exchangeTable   = dataBase.Exchanges;

            // Create a instrument expiry code.
            string expiryCode;

            if (!UV.Lib.Utilities.QTMath.TryConvertMonthYearToCodeY(InstrumentName.SeriesName, out expiryCode))
            {
                return(string.Empty);
            }

            // TODO: Create the fields we want
            string desiredFields = "*";//string.Format("{0}", instrumentTable.InstrumentID );

            // Create the query.
            StringBuilder query = new StringBuilder();

            query.AppendFormat("SELECT {0} FROM {1} ", desiredFields, dataBase.Instruments.TableNameFull);
            query.AppendFormat("WHERE {0} in (select {1} from {2} where {3} =\'{4}\') and {5} =\'{6}\' and {7} =\'{8}\'",
                               instrumentTable.ExchangeID,         // 0
                               instrumentTable.ExchangeID,         // 1
                               exchangeTable.TableNameFull,        // 2
                               exchangeTable.ExchangeNameTT,       // 3
                               InstrumentName.Product.Exchange,    // 4
                               instrumentTable.Product,            // 5
                               InstrumentName.Product.ProductName, // 6
                               instrumentTable.ExpirySymbol,       // 7
                               expiryCode);                        // 8
            query.Append(";");
            return(query.ToString());
        }// GetQuery();
Пример #2
0
        //
        protected string GetQueryForData(DatabaseInfo dataBase)
        {
            TableInfo.InstrumentsTableInfo instrumentTable = dataBase.Instruments;
            TableInfo.ExchangesTableInfo   exchangeTable   = dataBase.Exchanges;
            TableInfo.BarsTableInfo        barsTable       = dataBase.Bars;


            // Create a instrument expiry code.
            string expiryCode;

            if (!UV.Lib.Utilities.QTMath.TryConvertMonthYearToCodeY(InstrumentName.SeriesName, out expiryCode))
            {
                return(string.Empty);
            }
            // Create sub selection string to get instr ID from InstrumentName.
            StringBuilder subQuery   = new StringBuilder();
            int           instrSqlId = m_InstrumentQuery.Results[0].InstrumentId;

            subQuery.AppendFormat("{0}", instrSqlId);
            // Create the final query.
            string        desiredFields = "*";
            StringBuilder query         = new StringBuilder();

            query.AppendFormat("SELECT {0} FROM {1}", desiredFields, barsTable.TableNameFull);
            query.AppendFormat(" WHERE {0} = ({1})", barsTable.InstrumentID, subQuery);
            if (this.StartDate > DateTime.MinValue)
            {
                int    timestamp = (int)QTMath.DateTimeToEpoch(this.StartDate);
                string s         = timestamp.ToString();
                query.AppendFormat(" AND {0} >= {1}", barsTable.TimeStamp, s);
            }
            if (this.EndDate < DateTime.MaxValue)
            {
                int    timestamp = (int)QTMath.DateTimeToEpoch(this.EndDate);
                string s         = timestamp.ToString();
                query.AppendFormat(" AND {0} <= {1}", barsTable.TimeStamp, s);
            }
            query.AppendFormat(" AND {0} = 1", barsTable.SessionCode);  // currently we only want sessionCode = 1 for when products are trading
            query.AppendFormat(" ORDER BY {0}", barsTable.TimeStamp);

            if (this.StartDate == DateTime.MinValue)
            { // since our date time is unnasigned, lets reverse the order of our timestamps for this query so we get the proper number of rows
                query.AppendFormat(" DESC");
                m_IsReverseOrder = true;
            }

            if (this.MaxRows > 0)
            {
                query.AppendFormat(" LIMIT {0}", this.MaxRows);
            }
            query.Append(";");
            // Exit
            return(query.ToString());
        }// GetQuery();
        // *****************************************************************
        // ****                     Constructors                        ****
        // *****************************************************************
        //
        //
        //
        #endregion//Constructors


        #region Public Methods
        // *****************************************************************
        // ****                     Public Methods                      ****
        // *****************************************************************
        public override string GetQuery(DatabaseInfo dataBase)
        {
            TableInfo.InstrumentsTableInfo instrumentTable = dataBase.Instruments;
            TableInfo.ExchangesTableInfo   exchangeTable   = dataBase.Exchanges;


            // TODO: Create the fields we want
            string desiredFields = "*";//string.Format("{0}", instrumentTable.InstrumentID );

            // Create the query.
            StringBuilder query = new StringBuilder();

            query.AppendFormat("SELECT {0} FROM {1} ", desiredFields, dataBase.Instruments.TableNameFull);
            if (string.IsNullOrEmpty(this.InstrumentName.SeriesName) == false)
            {   // User has supplied a specific InstrumentName
                // Create a instrument expiry code.
                string expiryCode;
                if (!UV.Lib.Utilities.QTMath.TryConvertMonthYearToCodeY(this.InstrumentName.SeriesName, out expiryCode))
                {
                    return(string.Empty);
                }
                // NOTE : Currently this has to be future product type! //
                query.AppendFormat("WHERE {0} in (select {1} from {2} where {3} =\'{4}\') and {5} =\'{6}\' and {7} =\'{8}\' and {9} = \'{10}\'",
                                   instrumentTable.ExchangeID,                        // 0
                                   instrumentTable.ExchangeID,                        // 1
                                   exchangeTable.TableNameFull,                       // 2
                                   exchangeTable.ExchangeNameTT,                      // 3
                                   InstrumentName.Product.Exchange,                   // 4
                                   instrumentTable.Product,                           // 5
                                   InstrumentName.Product.ProductName,                // 6
                                   instrumentTable.ExpirySymbol,                      // 7
                                   expiryCode,                                        // 8
                                   instrumentTable.ProdType,                          //9
                                   InstrumentName.Product.Type.ToString().ToLower()); // 10
            }
            else
            {                                                           // Sometimes, the instrument name does not contain series name. This means the user wants to get all the instruments for that product.
                query.AppendFormat("WHERE {0} in (select {1} from {2} where {3} =\'{4}\') and {5} =\'{6}\'",
                                   instrumentTable.ExchangeID,          // 0
                                   instrumentTable.ExchangeID,          // 1
                                   exchangeTable.TableNameFull,         // 2
                                   exchangeTable.ExchangeNameTT,        // 3
                                   InstrumentName.Product.Exchange,     // 4
                                   instrumentTable.Product,             // 5
                                   InstrumentName.Product.ProductName); // 6
            }
            query.Append(";");
            return(query.ToString());
        }// GetQuery();
        }// GetQuery();

        //
        //
        //
        //
        /// <summary>
        ///
        /// </summary>
        /// <param name="dbInfo"></param>
        /// <param name="values"></param>
        /// <param name="fieldNames"></param>
        public override QueryStatus AcceptData(DatabaseInfo dbInfo, List <object> values, List <string> fieldNames)
        {
            TableInfo.InstrumentsTableInfo table = dbInfo.Instruments;

            // dummy vars
            //int n = 0;
            ProductTypes       type;
            InstrumentInfoItem item = null;
            //List<InstrumentInfoItem> itemList = new List<InstrumentInfoItem>();
            DateTime lastTradeDate = DateTime.MaxValue;

            //
            // Extract data
            //
            int ptr = 0;

            while (ptr < values.Count)
            {
                int fieldPtr = ptr % fieldNames.Count;
                if (fieldPtr == 0)
                {                                    // We are starting to load a new object.
                    item = new InstrumentInfoItem(); // now create the next item to write to.
                    this.Results.Add(item);          // save it into our list.
                }
                //
                // Fill elements of item.
                //
                if (values[ptr] != null)
                {
                    string key = fieldNames[fieldPtr];

                    // Identifiers
                    if (key == table.InstrumentID)
                    {
                        item.InstrumentId = (int)values[ptr];
                    }
                    else if (key == table.ExchangeID)
                    {
                        item.ExchangeId = (int)values[ptr];
                    }
                    else if (key == table.ProdFamilyID)
                    {
                        item.ProdFamilyId = (int)values[ptr];
                    }
                    else if (key == table.ExpirySymbol)
                    {
                        item.Expiry = values[ptr].ToString();
                    }
                    else if (key == table.Product)
                    {
                        item.ProductName = values[ptr].ToString();
                    }
                    else if (key == table.ProdType)
                    {
                        if (Enum.TryParse <ProductTypes>(values[ptr].ToString(), true, out type))
                        {
                            item.Type = type;
                        }
                        else if (values[ptr].ToString().ToUpper().Contains("SPREAD"))
                        {
                            item.Type = ProductTypes.Spread;
                        }
                    }
                    else if (key == table.SpreadComposition)
                    {
                        item.SpreadComposition = values[ptr].ToString();
                    }
                    // specs
                    else if (key == table.LastTradeDate && DateTime.TryParse(values[ptr].ToString(), out lastTradeDate))
                    {
                        item.LastTradeDate = lastTradeDate;
                    }
                    else if (key == table.Currency)
                    {
                        item.Currency = values[ptr].ToString();
                    }
                    else if (key == table.unitTT)
                    {
                        item.UnitValue = (double)values[ptr];
                    }
                    else if (key == table.tickTT)
                    {
                        item.TickValue = (double)values[ptr];
                    }
                    else if (key == table.calendarTickTT)
                    {
                        item.CalendarTickValue = (double)values[ptr];
                    }
                    else if (key == table.HedgeOptions)
                    {
                        item.HedgeOptions = values[ptr].ToString();
                    }
                    else if (key == table.InstrumentName)
                    {
                        item.InstrumentNameDatabase = values[ptr].ToString();
                    }
                    else if (key == table.InstrumentNameTT)
                    {
                        item.InstrumentNameTT = values[ptr].ToString();
                    }
                }

                ptr++;
            }//wend ptr
            // Exit;
            return(QueryStatus.Completed);
        }//