[Quantproject-developers] QuantProject/b3_Data/DataTables TickerDataTable.cs,1.4,1.5
Brought to you by:
glauco_1
|
From: Marco M. <mi...@us...> - 2005-01-06 18:57:04
|
Update of /cvsroot/quantproject/QuantProject/b3_Data/DataTables In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12705/b3_Data/DataTables Modified Files: TickerDataTable.cs Log Message: Added method GetTickersQuotedInEachMarketDay Index: TickerDataTable.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b3_Data/DataTables/TickerDataTable.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TickerDataTable.cs 5 Sep 2004 13:49:31 -0000 1.4 --- TickerDataTable.cs 6 Jan 2005 18:56:55 -0000 1.5 *************** *** 127,132 **** --- 127,199 ---- tableToAnalyze.Columns.Add("PeriodForSimpleReturn", System.Type.GetType("System.String")); } + + private static void addColumnNumberOfQuotes(DataTable tableToAnalyze) + { + if(!tableToAnalyze.Columns.Contains("NumberOfQuotes")) + tableToAnalyze.Columns.Add("NumberOfQuotes", System.Type.GetType("System.Int32")); + } + private static int getNumberOfTradingDays(string marketIndex, + DateTime firstQuoteDate, + DateTime lastQuoteDate) + { + QuantProject.Data.DataTables.Quotes marketQuotes = + new QuantProject.Data.DataTables.Quotes(marketIndex, firstQuoteDate, lastQuoteDate); + return marketQuotes.Rows.Count; + } + + private static void getTickersQuotedInEachMarketDay_addRow(DataRow rowToBeAdded, int numberOfTradingDays, + DataTable tableToWhichRowIsToBeAdded) + { + DataRow newRow = tableToWhichRowIsToBeAdded.NewRow(); + newRow[0]= rowToBeAdded[0]; + newRow["NumberOfQuotes"] = numberOfTradingDays; + tableToWhichRowIsToBeAdded.Rows.Add(newRow); + } + public static DataTable GetTickersQuotedInEachMarketDay(string marketIndex, string groupID, + DateTime firstQuoteDate, + DateTime lastQuoteDate, + long maxNumOfReturnedTickers) + { + int marketDaysForTheGivenMarket = + TickerDataTable.getNumberOfTradingDays(marketIndex, firstQuoteDate, lastQuoteDate); + DataTable groupOfTicker = QuantProject.DataAccess.Tables.Tickers_tickerGroups.GetTickers(groupID); + TickerDataTable.addColumnNumberOfQuotes(groupOfTicker); + QuantProject.Data.DataTables.GroupQuotes tickerQuotes = + new QuantProject.Data.DataTables.GroupQuotes( + groupID, firstQuoteDate, lastQuoteDate); + DataTable returnValue = groupOfTicker.Clone(); + foreach(DataRow row in groupOfTicker.Rows) + { + if(tickerQuotes.GetNumberOfDaysWithEffectiveTrades((string)row[0]) == marketDaysForTheGivenMarket) + //the current ticker has been effectively traded in each market day + TickerDataTable.getTickersQuotedInEachMarketDay_addRow(row, marketDaysForTheGivenMarket, + returnValue); + } + ExtendedDataTable.DeleteRows(returnValue, maxNumOfReturnedTickers); + return returnValue; + + } + public static DataTable GetTickersQuotedInEachMarketDay(string marketIndex, DataTable setOfTickers, + DateTime firstQuoteDate, + DateTime lastQuoteDate, + long maxNumOfReturnedTickers) + { + int marketDaysForTheGivenMarket = + TickerDataTable.getNumberOfTradingDays(marketIndex, firstQuoteDate, lastQuoteDate); + TickerDataTable.addColumnNumberOfQuotes(setOfTickers); + DataTable returnValue = setOfTickers.Clone(); + foreach(DataRow row in setOfTickers.Rows) + { + if(QuantProject.DataAccess.Tables.Quotes.GetNumberOfDaysWithEffectiveTrades((string)row[0],firstQuoteDate,lastQuoteDate) == marketDaysForTheGivenMarket) + //the current ticker has the same number of quotes as the market index + TickerDataTable.getTickersQuotedInEachMarketDay_addRow(row, marketDaysForTheGivenMarket, + returnValue); + } + ExtendedDataTable.DeleteRows(returnValue, maxNumOfReturnedTickers); + return returnValue; + } + } } |