Esempio n. 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();
        //
        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();
        // *****************************************************************
        // ****                     Public Methods                      ****
        // *****************************************************************
        //
        //
        //
        public override string GetQuery(DatabaseInfo databaseInfo)
        {
            TableInfo.ExchangesTableInfo exchangeTable = databaseInfo.Exchanges;
            string desiredFields = "*";

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

            query.AppendFormat("SELECT {0} FROM {1} ", desiredFields, exchangeTable.TableNameFull);
            query.Append(";");
            return(query.ToString());
        }
        // *****************************************************************
        // ****                     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();