[Quantproject-developers] QuantProject/b3_Data/Selectors SelectorByLiquidity.cs, 1.3, 1.4
Brought to you by:
glauco_1
|
From: Marco M. <mi...@us...> - 2009-03-29 18:35:48
|
Update of /cvsroot/quantproject/QuantProject/b3_Data/Selectors In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4337/b3_Data/Selectors Modified Files: SelectorByLiquidity.cs Log Message: Added the new parameter numOfTopRowsToDelete to the SelectorByLiquidity: now it is possible to select not only the most or the less liquid tickers, but also tickers with a medium liquidity (by setting the number of top rows, that is the less or most liquid tickers, that have to be deleted from the resulting table, leaving only the desired n tickers) Index: SelectorByLiquidity.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b3_Data/Selectors/SelectorByLiquidity.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SelectorByLiquidity.cs 17 Sep 2006 21:36:09 -0000 1.3 --- SelectorByLiquidity.cs 29 Mar 2009 18:35:36 -0000 1.4 *************** *** 35,99 **** public class SelectorByLiquidity : TickerSelector, ITickerSelector { ! private long minVolume = long.MinValue; ! public SelectorByLiquidity(DataTable setOfTickersToBeSelected, bool orderInASCmode, DateTime firstQuoteDate, DateTime lastQuoteDate, long maxNumOfReturnedTickers): ! base(setOfTickersToBeSelected, ! orderInASCmode, ! firstQuoteDate, ! lastQuoteDate, ! maxNumOfReturnedTickers) { ! } ! public SelectorByLiquidity(DataTable setOfTickersToBeSelected, ! bool orderInASCmode, ! DateTime firstQuoteDate, ! DateTime lastQuoteDate, ! long minVolume, ! long maxNumOfReturnedTickers): ! base(setOfTickersToBeSelected, ! orderInASCmode, ! firstQuoteDate, ! lastQuoteDate, ! maxNumOfReturnedTickers) ! { ! this.minVolume = minVolume; ! } ! ! public SelectorByLiquidity(string groupID, ! bool orderInASCmode, ! DateTime firstQuoteDate, ! DateTime lastQuoteDate, ! long maxNumOfReturnedTickers): ! base(groupID, ! orderInASCmode, ! firstQuoteDate, ! lastQuoteDate, ! maxNumOfReturnedTickers) ! { ! ! } ! ! public SelectorByLiquidity(string groupID, ! bool orderInASCmode, ! DateTime firstQuoteDate, ! DateTime lastQuoteDate, ! long minVolume , ! long maxNumOfReturnedTickers ): ! base(groupID, ! orderInASCmode, ! firstQuoteDate, ! lastQuoteDate, ! maxNumOfReturnedTickers) ! { ! this.minVolume = minVolume; ! } ! ! public DataTable GetTableOfSelectedTickers() { --- 35,202 ---- public class SelectorByLiquidity : TickerSelector, ITickerSelector { ! private long minVolume; ! private long numberOfTopRowsToDelete; + #region SelectorByLiquidity Constructors + + private void selectorByLiquidity_checkParameters(DataTable setOfTickersToBeSelected, + long maxNumOfReturnedTickers, + long numberOfTopRowsToDelete) + { + if( (int)maxNumOfReturnedTickers+(int)numberOfTopRowsToDelete > + setOfTickersToBeSelected.Rows.Count ) + throw new Exception("parameters maxNumOfReturnedTickers=" + maxNumOfReturnedTickers.ToString() + + " and numberOfTopRowsToDelete=" + numberOfTopRowsToDelete.ToString() + + " are too high " + + "for the given setOfTickersToBeSelected (num of rows: " + + setOfTickersToBeSelected.Rows.Count.ToString() + ")"); + } + + /// <summary> + /// ITickerSelector class for selecting tickers + /// by liquidity + /// </summary> + /// <param name="setOfTickersToBeSelected">DataTable containing + /// tickers that have to be selected</param> + /// <param name="orderInASCmode">If true, returned tickers + /// are ordered in Ascending mode - from less to most. If false + /// , returned tickers are ordered in descending mode - from most to less</param> + /// <param name="firstQuoteDate"></param> + /// <param name="lastQuoteDate"></param> + /// <param name="maxNumOfReturnedTickers">Max number of selected + /// tickers to be returned</param> + /// <param name="numberOfTopRowsToDelete">Number of top rows that have to be + /// deleted from the returned table. In other words, + /// max number of selected tickers are chosen after skipping the + /// first "numberOfTopRowsToDelete" rows from the tickers' table + /// resulting from selection by liquidity on the given initial + /// set of tickers + /// </param> + /// <returns></returns> public SelectorByLiquidity(DataTable setOfTickersToBeSelected, bool orderInASCmode, DateTime firstQuoteDate, DateTime lastQuoteDate, + long maxNumOfReturnedTickers, + long numberOfTopRowsToDelete): + base(setOfTickersToBeSelected, + orderInASCmode, + firstQuoteDate, + lastQuoteDate, + maxNumOfReturnedTickers) + { + this.selectorByLiquidity_checkParameters(setOfTickersToBeSelected, + maxNumOfReturnedTickers, + numberOfTopRowsToDelete); + this.minVolume = long.MinValue; + this.numberOfTopRowsToDelete = numberOfTopRowsToDelete; + } + /// <summary> + /// ITickerSelector class for selecting tickers + /// by liquidity + /// </summary> + /// <param name="setOfTickersToBeSelected">DataTable containing + /// tickers that have to be selected</param> + /// <param name="orderInASCmode">If true, returned tickers + /// are ordered in Ascending mode - from less to most. If false + /// , returned tickers are ordered in descending mode - from most to less</param> + /// <param name="firstQuoteDate"></param> + /// <param name="lastQuoteDate"></param> + /// <param name="minVolume">Filter by volume: only tickers having + /// average volume >= minVolume in the given period are selected</param> + /// <param name="maxNumOfReturnedTickers">Max number of selected + /// tickers to be returned</param> + /// <param name="numberOfTopRowsToDelete">Number of top rows that have to be + /// deleted from the returned table. In other words, + /// max number of selected tickers are chosen after skipping the + /// first "numberOfTopRowsToDelete" rows from the tickers' table + /// resulting from selection by liquidity on the given initial + /// set of tickers + /// </param> + /// <returns></returns> + public SelectorByLiquidity(DataTable setOfTickersToBeSelected, + bool orderInASCmode, + DateTime firstQuoteDate, + DateTime lastQuoteDate, + long minVolume, + long maxNumOfReturnedTickers, + long numberOfTopRowsToDelete): + base(setOfTickersToBeSelected, + orderInASCmode, + firstQuoteDate, + lastQuoteDate, + maxNumOfReturnedTickers) + { + this.selectorByLiquidity_checkParameters(setOfTickersToBeSelected, + maxNumOfReturnedTickers, + numberOfTopRowsToDelete); + this.minVolume = minVolume; + this.numberOfTopRowsToDelete = numberOfTopRowsToDelete; + } + public SelectorByLiquidity(DataTable setOfTickersToBeSelected, + bool orderInASCmode, + DateTime firstQuoteDate, + DateTime lastQuoteDate, long maxNumOfReturnedTickers): ! base(setOfTickersToBeSelected, ! orderInASCmode, ! firstQuoteDate, ! lastQuoteDate, ! maxNumOfReturnedTickers) { ! this.selectorByLiquidity_checkParameters(setOfTickersToBeSelected, ! maxNumOfReturnedTickers, ! 0); ! this.minVolume = long.MinValue; ! this.numberOfTopRowsToDelete = 0; } ! public SelectorByLiquidity(DataTable setOfTickersToBeSelected, ! bool orderInASCmode, ! long minVolume, ! DateTime firstQuoteDate, ! DateTime lastQuoteDate, ! long maxNumOfReturnedTickers): ! base(setOfTickersToBeSelected, ! orderInASCmode, ! firstQuoteDate, ! lastQuoteDate, ! maxNumOfReturnedTickers) ! { ! this.selectorByLiquidity_checkParameters(setOfTickersToBeSelected, ! maxNumOfReturnedTickers, ! 0); ! this.minVolume = minVolume; ! this.numberOfTopRowsToDelete = 0; ! } ! public SelectorByLiquidity(string groupID, ! bool orderInASCmode, ! DateTime firstQuoteDate, ! DateTime lastQuoteDate, ! long maxNumOfReturnedTickers): ! base(groupID, ! orderInASCmode, ! firstQuoteDate, ! lastQuoteDate, ! maxNumOfReturnedTickers) ! { ! this.minVolume = long.MinValue; ! } ! public SelectorByLiquidity(string groupID, ! bool orderInASCmode, ! DateTime firstQuoteDate, ! DateTime lastQuoteDate, ! long minVolume , ! long maxNumOfReturnedTickers ): ! base(groupID, ! orderInASCmode, ! firstQuoteDate, ! lastQuoteDate, ! maxNumOfReturnedTickers) ! { ! this.minVolume = minVolume; ! } ! ! #endregion SelectorByLiquidityConstructors ! public DataTable GetTableOfSelectedTickers() { *************** *** 130,134 **** this.lastQuoteDate, this.minVolume, ! this.maxNumOfReturnedTickers); else returnTickers = --- 233,238 ---- this.lastQuoteDate, this.minVolume, ! this.maxNumOfReturnedTickers, ! this.numberOfTopRowsToDelete); else returnTickers = *************** *** 137,149 **** this.firstQuoteDate, this.lastQuoteDate, ! this.maxNumOfReturnedTickers); } return returnTickers; } ! public void SelectAllTickers() ! { ! ; ! } ! ! } } --- 241,253 ---- this.firstQuoteDate, this.lastQuoteDate, ! this.maxNumOfReturnedTickers, ! this.numberOfTopRowsToDelete); } return returnTickers; } ! public void SelectAllTickers() ! { ! ; ! } ! } } |