[Quantproject-developers] QuantProject/b3_Data/DataTables TickerDataTable.cs,1.5,1.6
Brought to you by:
glauco_1
|
From: Marco M. <mi...@us...> - 2005-12-20 19:31:12
|
Update of /cvsroot/quantproject/QuantProject/b3_Data/DataTables In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16324/b3_Data/DataTables Modified Files: TickerDataTable.cs Log Message: Updated GetTickersByPerformance method Index: TickerDataTable.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b3_Data/DataTables/TickerDataTable.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TickerDataTable.cs 6 Jan 2005 18:56:55 -0000 1.5 --- TickerDataTable.cs 20 Dec 2005 19:31:02 -0000 1.6 *************** *** 26,29 **** --- 26,30 ---- using QuantProject.DataAccess.Tables; + namespace QuantProject.Data.DataTables { *************** *** 59,72 **** } public static DataTable GetTickersByPerformance(bool orderByASC, string groupID, ! DateTime firstQuoteDate, ! DateTime lastQuoteDate, ! long maxNumOfReturnedTickers) { DataTable groupOfTicker = QuantProject.DataAccess.Tables.Tickers_tickerGroups.GetTickers(groupID); ! //also possible, but slower: ! //return TickerDataTable.GetBestPerformingTickers(orderByASC, groupOfTicker, firstQuoteDate, ! // lastQuoteDate, maxNumOfReturnedTickers); ! TickerDataTable.addColumnsForPerformanceAnalysis(groupOfTicker); DateTime firstAvailableQuoteDate, lastAvailableQuoteDate; --- 60,106 ---- } + #region GetTickersByPerformance + + private static void addColumnsForPerformanceAnalysis(DataTable tableToAnalyze) + { + if(!tableToAnalyze.Columns.Contains("SimpleReturn")) + tableToAnalyze.Columns.Add("SimpleReturn", System.Type.GetType("System.Double")); + if(!tableToAnalyze.Columns.Contains("PeriodForSimpleReturn")) + tableToAnalyze.Columns.Add("PeriodForSimpleReturn", System.Type.GetType("System.String")); + } + + private static string getTickersByPerformance_getFilterExpression(float minAbsoluteSimpleReturn, + float maxAbsoluteSimpleReturn) + { + string returnValue = ""; + if(minAbsoluteSimpleReturn > 0 && + maxAbsoluteSimpleReturn > 0) + //both limits have to be greater than zero + { + returnValue = "(" + minAbsoluteSimpleReturn.ToString("#.##") + + "<=SimpleReturn AND " + + maxAbsoluteSimpleReturn.ToString("#.##") + + ">=SimpleReturn)" + + " OR " + + "(" + "-" + maxAbsoluteSimpleReturn.ToString("#.##") + + "<SimpleReturn AND " + + "-" + minAbsoluteSimpleReturn.ToString("#.##") + + ">SimpleReturn)"; + } + return returnValue; + } + public static DataTable GetTickersByPerformance(bool orderByASC, string groupID, ! DateTime firstQuoteDate, ! DateTime lastQuoteDate, ! long maxNumOfReturnedTickers, ! float minAbsoluteSimpleReturn, ! float maxAbsoluteSimpleReturn) { DataTable groupOfTicker = QuantProject.DataAccess.Tables.Tickers_tickerGroups.GetTickers(groupID); ! ! //return TickerDataTable.GetTickersByPerformance(orderByASC, groupOfTicker, firstQuoteDate, ! // lastQuoteDate, maxNumOfReturnedTickers, minAbsoluteSimpleReturn, maxAbsoluteSimpleReturn); ! TickerDataTable.addColumnsForPerformanceAnalysis(groupOfTicker); DateTime firstAvailableQuoteDate, lastAvailableQuoteDate; *************** *** 87,101 **** } } ! ExtendedDataTable.Sort(groupOfTicker, "SimpleReturn", orderByASC); ExtendedDataTable.DeleteRows(groupOfTicker, maxNumOfReturnedTickers); return groupOfTicker; } public static DataTable GetTickersByPerformance(bool orderByASC, DataTable setOfTickers, DateTime firstQuoteDate, DateTime lastQuoteDate, ! long maxNumOfReturnedTickers) { TickerDataTable.addColumnsForPerformanceAnalysis(setOfTickers); DateTime firstAvailableQuoteDate, lastAvailableQuoteDate; --- 121,154 ---- } } ! string filterExpression = ! getTickersByPerformance_getFilterExpression(minAbsoluteSimpleReturn, ! maxAbsoluteSimpleReturn); ! ExtendedDataTable.CopyAndSort(groupOfTicker, filterExpression, ! "SimpleReturn", orderByASC); ExtendedDataTable.DeleteRows(groupOfTicker, maxNumOfReturnedTickers); return groupOfTicker; + } + + public static DataTable GetTickersByPerformance(bool orderByASC, string groupID, + DateTime firstQuoteDate, + DateTime lastQuoteDate, + long maxNumOfReturnedTickers) + { + return TickerDataTable.GetTickersByPerformance(orderByASC, groupID, firstQuoteDate, + lastQuoteDate, maxNumOfReturnedTickers, + -1, -1); + } + public static DataTable GetTickersByPerformance(bool orderByASC, DataTable setOfTickers, DateTime firstQuoteDate, DateTime lastQuoteDate, ! long maxNumOfReturnedTickers, ! float minAbsoluteSimpleReturn, ! float maxAbsoluteSimpleReturn) { + DataTable returnValue; TickerDataTable.addColumnsForPerformanceAnalysis(setOfTickers); DateTime firstAvailableQuoteDate, lastAvailableQuoteDate; *************** *** 115,130 **** } } ! ExtendedDataTable.Sort(setOfTickers, "SimpleReturn", orderByASC); ! ExtendedDataTable.DeleteRows(setOfTickers, maxNumOfReturnedTickers); ! return setOfTickers; } ! ! private static void addColumnsForPerformanceAnalysis(DataTable tableToAnalyze) { ! if(!tableToAnalyze.Columns.Contains("SimpleReturn")) ! tableToAnalyze.Columns.Add("SimpleReturn", System.Type.GetType("System.Double")); ! if(!tableToAnalyze.Columns.Contains("PeriodForSimpleReturn")) ! tableToAnalyze.Columns.Add("PeriodForSimpleReturn", System.Type.GetType("System.String")); } private static void addColumnNumberOfQuotes(DataTable tableToAnalyze) --- 168,192 ---- } } ! string filterExpression = ! getTickersByPerformance_getFilterExpression(minAbsoluteSimpleReturn, ! maxAbsoluteSimpleReturn); ! returnValue = ExtendedDataTable.CopyAndSort(setOfTickers, ! filterExpression, ! "SimpleReturn", ! orderByASC); ! ExtendedDataTable.DeleteRows(returnValue, maxNumOfReturnedTickers); ! return returnValue; } ! ! public static DataTable GetTickersByPerformance(bool orderByASC, DataTable setOfTickers, ! DateTime firstQuoteDate, ! DateTime lastQuoteDate, ! long maxNumOfReturnedTickers) { ! return GetTickersByPerformance(orderByASC, setOfTickers, firstQuoteDate,lastQuoteDate, ! maxNumOfReturnedTickers, -1, -1); } + #endregion + private static void addColumnNumberOfQuotes(DataTable tableToAnalyze) |