[Quantproject-developers] QuantProject/b3_Data/DataTables TickerDataTable.cs,1.6,1.7
Brought to you by:
glauco_1
|
From: Marco M. <mi...@us...> - 2006-04-08 14:21:00
|
Update of /cvsroot/quantproject/QuantProject/b3_Data/DataTables In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20280/b3_Data/DataTables Modified Files: TickerDataTable.cs Log Message: Added GetTickersNotQuotedAtEachMarketDay method. Useful for retrieving tickers with missing quotes. Index: TickerDataTable.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b3_Data/DataTables/TickerDataTable.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** TickerDataTable.cs 20 Dec 2005 19:31:02 -0000 1.6 --- TickerDataTable.cs 8 Apr 2006 14:20:56 -0000 1.7 *************** *** 213,216 **** --- 213,217 ---- tableToWhichRowIsToBeAdded.Rows.Add(newRow); } + public static DataTable GetTickersQuotedInEachMarketDay(string marketIndex, string groupID, DateTime firstQuoteDate, *************** *** 258,261 **** --- 259,319 ---- } + private static void getTickersQuotedNotAtEachMarketDay_addRow(DataRow rowToBeAdded, + int numberOfTradingDays, + int numberOfMissingQuotes, + DataTable tableToWhichRowIsToBeAdded) + { + DataRow newRow = tableToWhichRowIsToBeAdded.NewRow(); + newRow[0]= rowToBeAdded[0]; + newRow["NumberOfTradingDays"] = numberOfTradingDays; + newRow["NumberOfMissingQuotes"] = numberOfMissingQuotes; + tableToWhichRowIsToBeAdded.Rows.Add(newRow); + } + + private static void getTickersQuotedNotAtEachMarketDay_addColumns(DataTable tableToAnalyze) + { + if(!tableToAnalyze.Columns.Contains("NumberOfTradingDays")) + tableToAnalyze.Columns.Add("NumberOfTradingDays", System.Type.GetType("System.Int32")); + if(!tableToAnalyze.Columns.Contains("NumberOfMissingQuotes")) + tableToAnalyze.Columns.Add("NumberOfMissingQuotes", System.Type.GetType("System.Int32")); + } + + public static DataTable GetTickersNotQuotedAtEachMarketDay(string marketIndex, string groupID, + DateTime firstQuoteDate, + DateTime lastQuoteDate, + long maxNumOfReturnedTickers) + { + + DataTable groupOfTickers = QuantProject.DataAccess.Tables.Tickers_tickerGroups.GetTickers(groupID); + + return GetTickersNotQuotedAtEachMarketDay(marketIndex,groupOfTickers,firstQuoteDate,lastQuoteDate, + maxNumOfReturnedTickers); + } + + public static DataTable GetTickersNotQuotedAtEachMarketDay(string marketIndex, DataTable setOfTickers, + DateTime firstQuoteDate, + DateTime lastQuoteDate, + long maxNumOfReturnedTickers) + { + int marketDaysForTheGivenMarket = + TickerDataTable.getNumberOfTradingDays(marketIndex, firstQuoteDate, lastQuoteDate); + TickerDataTable.getTickersQuotedNotAtEachMarketDay_addColumns(setOfTickers); + DataTable returnValue = setOfTickers.Clone(); + int numberOfMissingQuotes = 0; + foreach(DataRow row in setOfTickers.Rows) + { + DataTable tickerQuotes = new Quotes((string)row[0],firstQuoteDate,lastQuoteDate); + numberOfMissingQuotes = marketDaysForTheGivenMarket - tickerQuotes.Rows.Count; + if( numberOfMissingQuotes > 0 ) + //the current ticker has NOT been effectively traded at each market day + TickerDataTable.getTickersQuotedNotAtEachMarketDay_addRow(row, marketDaysForTheGivenMarket, + numberOfMissingQuotes, + returnValue); + } + ExtendedDataTable.DeleteRows(returnValue, maxNumOfReturnedTickers); + + return returnValue; + } + } } |