[Quantproject-developers] QuantProject/b4_Business/a05_Timing IndexBasedHistoricalTimer.cs, 1.4, 1.
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2008-12-10 19:37:26
|
Update of /cvsroot/quantproject/QuantProject/b4_Business/a05_Timing In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv14170/b4_Business/a05_Timing Modified Files: IndexBasedHistoricalTimer.cs Log Message: the semantics has been slightly (but significantly) changed: - in the previous revision a NewDateTime was thrown out only if the benchmark was traded at that time - now the timer fetches all days when the benchmark is traded and for each of those days every daily time is thrown - thus, the current revision possibly throws out some more NewDateTime events Furthermore, parameters checking has been added Index: IndexBasedHistoricalTimer.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b4_Business/a05_Timing/IndexBasedHistoricalTimer.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** IndexBasedHistoricalTimer.cs 20 Nov 2008 20:46:55 -0000 1.4 --- IndexBasedHistoricalTimer.cs 10 Dec 2008 19:37:13 -0000 1.5 *************** *** 46,49 **** --- 46,59 ---- private int currentDateTimeIndex; + /// <summary> + /// + /// </summary> + /// <param name="indexTicker"></param> + /// <param name="firstDateTime"></param> + /// <param name="lastDateTime"></param> + /// <param name="dailyTimes">daily times: these times must be in strict ascending + /// order and they must be intraday (i.e. smaller than one hour after + /// market close)</param> + /// <param name="intervalFrameInSeconds"></param> public IndexBasedHistoricalTimer( string indexTicker , *************** *** 53,56 **** --- 63,67 ---- int intervalFrameInSeconds) { + this.checkParameters( dailyTimes ); this.indexTicker = indexTicker; this.firstDateTime = firstDateTime; *************** *** 60,142 **** } #region initializeTimer #region initialize_dateTimesToBeThrown ! #region addDateTimeAndIfTheCaseAddEndOfDayDateTime ! #region addOneHourAfterMarketCloseDateTimeIfTheCase ! #region isOneHourAfterMarktetCloseToBeInserted ! private bool isOneHourAfterMarktetCloseToBeInserted_withOneAdded( ! DateTime nextDateTimeToBeAdded ) { ! Date dateForLastDateTimeAdded = ! new Date( this.dateTimesToBeThrown[ this.dateTimesToBeThrown.Count - 1 ] ); ! Date dateForNextDateTimeToBeAdded = ! new Date( nextDateTimeToBeAdded ); ! bool isToBeInserted = ( dateForNextDateTimeToBeAdded > dateForLastDateTimeAdded ); ! return isToBeInserted; } ! private bool isOneHourAfterMarktetCloseToBeInserted( DateTime nextDateTimeToBeAdded ) { ! bool isToBeInserted = false; ! if ( this.dateTimesToBeThrown.Count > 0 ) ! // at least one DateTime has already been added ! isToBeInserted = isOneHourAfterMarktetCloseToBeInserted_withOneAdded( ! nextDateTimeToBeAdded ); ! return isToBeInserted; } ! #endregion isOneHourAfterMarktetCloseToBeInserted #region addOneHourAfterMarketCloseDateTime ! private DateTime getOneHourAfterMarketCloseForLastDateTimeAdded() { ! DateTime dateTimeForLastDateTimeAdded = ! this.dateTimesToBeThrown[ this.dateTimesToBeThrown.Count - 1 ]; ! DateTime oneHourAfterMarketCloseForLastDateTimeAdded = ! HistoricalEndOfDayTimer.GetOneHourAfterMarketClose( ! dateTimeForLastDateTimeAdded ); ! return oneHourAfterMarketCloseForLastDateTimeAdded; } ! private void addOneHourAfterMarketCloseDateTime( DateTime dateTime ) { ! DateTime oneHourAfterMarketCloseForLastDateTimeAdded = ! this.getOneHourAfterMarketCloseForLastDateTimeAdded(); ! this.dateTimesToBeThrown.Add( ! oneHourAfterMarketCloseForLastDateTimeAdded ); } ! #endregion addOneHourAfterMarketCloseDateTime ! private void addOneHourAfterMarketCloseDateTimeIfTheCase( ! DateTime nextDateTimeToBeAdded ) { ! if ( this.isOneHourAfterMarktetCloseToBeInserted( nextDateTimeToBeAdded ) ) ! this.addOneHourAfterMarketCloseDateTime( nextDateTimeToBeAdded ); } ! #endregion addOneHourAfterMarketCloseDateTimeIfTheCase ! private void addDateTimeAndIfTheCaseAddOneHourAfterMarketCloseDateTime( ! DateTime nextDateTimeToBeAdded ) { ! this.addOneHourAfterMarketCloseDateTimeIfTheCase( nextDateTimeToBeAdded ); ! this.dateTimesToBeThrown.Add( nextDateTimeToBeAdded ); } ! #endregion addDateTimeAndIfTheCaseAddEndOfDayDateTime private void initialize_dateTimesToBeThrown( ! History dateTimesToBeThrownHistory ) { this.dateTimesToBeThrown = new List< DateTime >(); ! foreach ( DateTime dateTime in dateTimesToBeThrownHistory.Keys ) ! this.addDateTimeAndIfTheCaseAddOneHourAfterMarketCloseDateTime( dateTime ); } private void initialize_dateTimesToBeThrown() { ! History dateTimesToBeThrownHistory = ! Bars.GetMarketDateTimes( ! this.indexTicker , this.firstDateTime , this.lastDateTime , ! this.dailyTimes, this.intervalFrameInSeconds ); ! this.initialize_dateTimesToBeThrown( dateTimesToBeThrownHistory ); } #endregion initialize_dateTimesToBeThrown --- 71,229 ---- } + private void checkParameters( List< Time > dailyTimes ) + { + Time.CheckStrictlyAscending( dailyTimes ); + } + #region initializeTimer #region initialize_dateTimesToBeThrown ! #region addDailyTimesAndIfTheCaseAddOneHourAfterMarketCloseDateTime ! // #region addDailyTimeAndIfTheCaseAddOneHourAfterMarketCloseDateTime ! // ! // #region addNextDateTimeAndIfTheCaseAddOneHourAfterMarketCloseDateTime ! // ! // #region addOneHourAfterMarketCloseDateTimeIfTheCase ! // ! //// #region isOneHourAfterMarktetCloseToBeInserted ! //// private bool isOneHourAfterMarktetCloseToBeInserted_withOneAdded( ! //// DateTime nextDateTimeToBeAdded ) ! //// { ! //// Date dateForLastDateTimeAdded = ! //// new Date( this.dateTimesToBeThrown[ this.dateTimesToBeThrown.Count - 1 ] ); ! //// Date dateForNextDateTimeToBeAdded = ! //// new Date( nextDateTimeToBeAdded ); ! //// bool isToBeInserted = ( dateForNextDateTimeToBeAdded > dateForLastDateTimeAdded ); ! //// return isToBeInserted; ! //// } ! //// private bool isOneHourAfterMarktetCloseToBeInserted( DateTime nextDateTimeToBeAdded ) ! //// { ! //// bool isToBeInserted = false; ! //// if ( this.dateTimesToBeThrown.Count > 0 ) ! //// // at least one DateTime has already been added ! //// isToBeInserted = isOneHourAfterMarktetCloseToBeInserted_withOneAdded( ! //// nextDateTimeToBeAdded ); ! //// return isToBeInserted; ! //// } ! //// #endregion isOneHourAfterMarktetCloseToBeInserted ! // ! // #region addOneHourAfterMarketCloseDateTime ! // private DateTime getOneHourAfterMarketCloseForLastDateTimeAdded() ! // { ! // DateTime dateTimeForLastDateTimeAdded = ! // this.dateTimesToBeThrown[ this.dateTimesToBeThrown.Count - 1 ]; ! // DateTime oneHourAfterMarketCloseForLastDateTimeAdded = ! // HistoricalEndOfDayTimer.GetOneHourAfterMarketClose( ! // dateTimeForLastDateTimeAdded ); ! // return oneHourAfterMarketCloseForLastDateTimeAdded; ! // } ! // private void addOneHourAfterMarketCloseDateTime( DateTime nextDateTimeToBeAdded ) ! // { ! // DateTime oneHourAfterMarketCloseForLastDateTimeAdded = ! // this.getOneHourAfterMarketCloseForLastDateTimeAdded(); ! // this.dateTimesToBeThrown.Add( ! // oneHourAfterMarketCloseForLastDateTimeAdded ); ! // } ! // #endregion addOneHourAfterMarketCloseDateTime ! // ! // private void addOneHourAfterMarketCloseDateTimeIfTheCase( ! // DateTime nextDateTimeToBeAdded ) ! // { ! // if ( this.isOneHourAfterMarktetCloseToBeInserted( nextDateTimeToBeAdded ) ) ! // this.addOneHourAfterMarketCloseDateTime( nextDateTimeToBeAdded ); ! // } ! // #endregion addOneHourAfterMarketCloseDateTimeIfTheCase ! // ! // private void addNextDateTimeAndIfTheCaseAddOneHourAfterMarketCloseDateTime( ! // DateTime nextDateTimeToBeAdded ) ! // { ! // this.addOneHourAfterMarketCloseDateTimeIfTheCase( nextDateTimeToBeAdded ); ! // this.dateTimesToBeThrown.Add( nextDateTimeToBeAdded ); ! // } ! // ! // #endregion addNextDateTimeAndIfTheCaseAddOneHourAfterMarketCloseDateTime ! // ! // private void addDailyTimeAndIfTheCaseAddOneHourAfterMarketCloseDateTime( ! // Time time , DateTime benchmarkMarketDay ) ! // { ! // DateTime nextDateTimeToBeAdded = Time.GetDateTimeFromMerge( ! // benchmarkMarketDay , time ); ! // this.addNextDateTimeAndIfTheCaseAddOneHourAfterMarketCloseDateTime( ! // nextDateTimeToBeAdded ); ! // } ! // #endregion addDailyTimeAndIfTheCaseAddOneHourAfterMarketCloseDateTime ! #region addDailyTimes ! private void addDailyTime( Time time , DateTime benchmarkMarketDay ) { ! DateTime dateTimeToBeAdded = Time.GetDateTimeFromMerge( ! benchmarkMarketDay , time ); ! this.dateTimesToBeThrown.Add( dateTimeToBeAdded ); } ! private void addDailyTimes( DateTime benchmarkMarketDay ) { ! foreach ( Time time in this.dailyTimes ) ! this.addDailyTime( time , benchmarkMarketDay ); } ! #endregion addDailyTimes #region addOneHourAfterMarketCloseDateTime ! ! #region checkAndAddOneHourAfterMarketCloseDateTime ! private void checkIfOneHourAfterMarketCloseDateTimeFollowsLastAddedDateTime( ! DateTime oneHourAfterMarketCloseDateTime ) { ! DateTime lastDateTimeAdded = this.dateTimesToBeThrown[ ! this.dateTimesToBeThrown.Count - 1 ]; ! if ( lastDateTimeAdded >= oneHourAfterMarketCloseDateTime ) ! throw new Exception( ! "dailyTimes given to this object's constructor cannot be " + ! "larger or equal to one hour after market close" ); } ! private void checkAndAddOneHourAfterMarketCloseDateTime( ! DateTime oneHourAfterMarketCloseDateTime ) { ! this.checkIfOneHourAfterMarketCloseDateTimeFollowsLastAddedDateTime( ! oneHourAfterMarketCloseDateTime ); ! this.dateTimesToBeThrown.Add( oneHourAfterMarketCloseDateTime ); } ! #endregion checkAndAddOneHourAfterMarketCloseDateTime ! private void addOneHourAfterMarketCloseDateTime( DateTime benchmarkMarketDay ) { ! DateTime oneHourAfterMarketCloseDateTime = ! HistoricalEndOfDayTimer.GetOneHourAfterMarketClose( ! benchmarkMarketDay ); ! this.checkAndAddOneHourAfterMarketCloseDateTime( oneHourAfterMarketCloseDateTime ); } ! #endregion addOneHourAfterMarketCloseDateTime ! private void addDailyTimesAndOneHourAfterMarketCloseDateTime( ! DateTime benchmarkMarketDay ) { ! this.addDailyTimes( benchmarkMarketDay ); ! this.addOneHourAfterMarketCloseDateTime( benchmarkMarketDay ); } ! #endregion addDailyTimesAndIfTheCaseAddOneHourAfterMarketCloseDateTime private void initialize_dateTimesToBeThrown( ! History benchmarkMarketDays ) { this.dateTimesToBeThrown = new List< DateTime >(); ! foreach ( DateTime benchmarkMarketDay in benchmarkMarketDays.Keys ) ! this.addDailyTimesAndOneHourAfterMarketCloseDateTime( ! benchmarkMarketDay ); } private void initialize_dateTimesToBeThrown() { ! History benchmarkMarketDays = ! Quotes.GetMarketDays( ! this.indexTicker , this.firstDateTime , this.lastDateTime ); ! // Bars.GetMarketDateTimes( ! // this.indexTicker , this.firstDateTime , this.lastDateTime , ! // this.dailyTimes, this.intervalFrameInSeconds ); ! this.initialize_dateTimesToBeThrown( benchmarkMarketDays ); } #endregion initialize_dateTimesToBeThrown |