[Quantproject-developers] QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardMultiOneRank RunWa
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2008-09-29 21:21:35
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardMultiOneRank In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv18335 Modified Files: RunWalkForwardMultiOneRank.cs WFMultiOneRankChosenTickers.cs WFMultiOneRankEligibleTickers.cs WFMultiOneRankEndOfDayTimerHandler.cs Log Message: The new revision moves toward an intraday enabled framework. EndOfDayDate time has been removed, DateTime is used now. The code has been changed accordingly. Index: WFMultiOneRankEndOfDayTimerHandler.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardMultiOneRank/WFMultiOneRankEndOfDayTimerHandler.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** WFMultiOneRankEndOfDayTimerHandler.cs 14 Mar 2006 14:47:52 -0000 1.4 --- WFMultiOneRankEndOfDayTimerHandler.cs 29 Sep 2008 21:20:54 -0000 1.5 *************** *** 3,7 **** WFMultiOneRankEndOfDayTimerHandler.cs ! Copyright (C) 2003 Glauco Siliprandi --- 3,7 ---- WFMultiOneRankEndOfDayTimerHandler.cs ! Copyright (C) 2003 Glauco Siliprandi *************** *** 19,23 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! */ using System; using System.Collections; --- 19,23 ---- along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! */ using System; using System.Collections; *************** *** 38,42 **** /// This is the core strategy! /// </summary> ! public class WFMultiOneRankEndOfDayTimerHandler { private WFMultiOneRankEligibleTickers eligibleTickers; --- 38,43 ---- /// This is the core strategy! /// </summary> ! public class WFMultiOneRankEndOfDayTimerHandler : ! QuantProject.Business.Strategies.EndOfDayTimerHandler { private WFMultiOneRankEligibleTickers eligibleTickers; *************** *** 108,117 **** this.eligibleTickers = new WFMultiOneRankEligibleTickers( this.tickerGroupID , ! this.benchmark , ! numberEligibleTickers , inSampleWindowDays , ! this.account.EndOfDayTimer ); this.chosenTickers = new WFMultiOneRankChosenTickers( this.eligibleTickers , this.numberOfPositionsToBeChosen , ! this.inSampleWindowDays , this.account.EndOfDayTimer , this.generationNumberForGeneticOptimizer , this. populationSizeForGeneticOptimizer ); --- 109,118 ---- this.eligibleTickers = new WFMultiOneRankEligibleTickers( this.tickerGroupID , ! this.benchmark , ! numberEligibleTickers , inSampleWindowDays , ! this.account.Timer ); this.chosenTickers = new WFMultiOneRankChosenTickers( this.eligibleTickers , this.numberOfPositionsToBeChosen , ! this.inSampleWindowDays , this.account.Timer , this.generationNumberForGeneticOptimizer , this. populationSizeForGeneticOptimizer ); *************** *** 123,129 **** this.lastOptimizationDate = DateTime.MinValue; } ! private EndOfDayDateTime now() { ! return this.account.EndOfDayTimer.GetCurrentTime(); } private void bestPerformingNewProgress( --- 124,130 ---- this.lastOptimizationDate = DateTime.MinValue; } ! private DateTime now() { ! return this.account.Timer.GetCurrentDateTime(); } private void bestPerformingNewProgress( *************** *** 136,142 **** bool returnValue = ( ( ( this.account.Portfolio.Count == 0 ) ! && ( ( this.lastOptimizationDate == DateTime.MinValue ) ) ) || ! ( this.now().DateTime >= ! this.lastOptimizationDate.AddDays( this.outOfSampleWindowDays ) ) ); return returnValue; } --- 137,143 ---- bool returnValue = ( ( ( this.account.Portfolio.Count == 0 ) ! && ( ( this.lastOptimizationDate == DateTime.MinValue ) ) ) || ! ( this.now() >= ! this.lastOptimizationDate.AddDays( this.outOfSampleWindowDays ) ) ); return returnValue; } *************** *** 147,151 **** /// <param name="eventArgs"></param> public void OneHourAfterMarketCloseEventHandler( ! Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) { if ( this.areBestTickersToBeChosen() ) --- 148,152 ---- /// <param name="eventArgs"></param> public void OneHourAfterMarketCloseEventHandler( ! Object sender , DateTime dateTime ) { if ( this.areBestTickersToBeChosen() ) *************** *** 157,167 **** this.eligibleTickers.SetTickers(); Console.WriteLine( "Number of Eligible tickers: " + ! this.eligibleTickers.EligibleTickers.Rows.Count ); this.chosenTickers.SetTickers( this.eligibleTickers ); ! this.lastOptimizationDate = this.now().DateTime; } // oneHourAfterMarketCloseEventHandler_orderChosenTickers( ( IEndOfDayTimer ) sender ); } // #endregion #region FiveMinutesBeforeMarketCloseEventHandler private string getTicker( string signedTicker ) --- 158,169 ---- this.eligibleTickers.SetTickers(); Console.WriteLine( "Number of Eligible tickers: " + ! this.eligibleTickers.EligibleTickers.Rows.Count ); this.chosenTickers.SetTickers( this.eligibleTickers ); ! this.lastOptimizationDate = this.now(); } // oneHourAfterMarketCloseEventHandler_orderChosenTickers( ( IEndOfDayTimer ) sender ); } // #endregion + #region FiveMinutesBeforeMarketCloseEventHandler private string getTicker( string signedTicker ) *************** *** 187,197 **** double todayMarketValueAtClose = this.account.DataStreamer.GetCurrentBid( ticker ); ! EndOfDayDateTime yesterdayAtClose = new ! EndOfDayDateTime( ! this.account.EndOfDayTimer.GetCurrentTime().DateTime.AddDays( - 1 ) , ! EndOfDaySpecificTime.MarketClose ); double yesterdayMarketValueAtClose = this.historicalAdjustedQuoteProvider.GetMarketValue( ! ticker , yesterdayAtClose ); double returnValue = ( todayMarketValueAtClose - yesterdayMarketValueAtClose ) / --- 189,201 ---- double todayMarketValueAtClose = this.account.DataStreamer.GetCurrentBid( ticker ); ! DateTime yesterdayAtClose = ! HistoricalEndOfDayTimer.GetMarketClose( ! this.account.Timer.GetCurrentDateTime().AddDays( - 1 ) ); ! // new EndOfDayDateTime( ! // this.account.EndOfDayTimer.GetCurrentTime().DateTime.AddDays( - 1 ) , ! // EndOfDaySpecificTime.MarketClose ); double yesterdayMarketValueAtClose = this.historicalAdjustedQuoteProvider.GetMarketValue( ! ticker , yesterdayAtClose ); double returnValue = ( todayMarketValueAtClose - yesterdayMarketValueAtClose ) / *************** *** 217,251 **** return totalReturn < 0; } ! private OrderType fiveMinutesBeforeMarketCloseEventHandler_openPosition_getOrderType( string signedTicker , bool isToReverse ) { OrderType orderType = OrderType.MarketBuy; if ( ( signedTicker.StartsWith( "-" ) && !isToReverse ) || ! ( !signedTicker.StartsWith( "-" ) && isToReverse ) ) orderType = OrderType.MarketSellShort; return orderType; } ! private void fiveMinutesBeforeMarketCloseEventHandler_openPosition( string signedTicker , bool isToReverse ) { string ticker = this.getTicker( signedTicker ); OrderType orderType = ! this.fiveMinutesBeforeMarketCloseEventHandler_openPosition_getOrderType( ! signedTicker , isToReverse ); double maxPositionValue = this.account.GetMarketValue() / this.numberOfPositionsToBeChosen; long sharesToBeTraded = OneRank.MaxBuyableShares( ticker , ! maxPositionValue , this.account.DataStreamer ); this.account.AddOrder( new Order( orderType , ! new Instrument( ticker ) , sharesToBeTraded ) ); } ! private void fiveMinutesBeforeMarketCloseEventHandler_openPositions() { bool isToReverse = this.isToReverse(); foreach ( string signedTicker in this.chosenTickers.Keys ) ! this.fiveMinutesBeforeMarketCloseEventHandler_openPosition( signedTicker , isToReverse ); } ! private void fiveMinutesBeforeMarketCloseEventHandler_closePosition( string ticker ) { --- 221,255 ---- return totalReturn < 0; } ! private OrderType marketCloseEventHandler_openPosition_getOrderType( string signedTicker , bool isToReverse ) { OrderType orderType = OrderType.MarketBuy; if ( ( signedTicker.StartsWith( "-" ) && !isToReverse ) || ! ( !signedTicker.StartsWith( "-" ) && isToReverse ) ) orderType = OrderType.MarketSellShort; return orderType; } ! private void marketCloseEventHandler_openPosition( string signedTicker , bool isToReverse ) { string ticker = this.getTicker( signedTicker ); OrderType orderType = ! this.marketCloseEventHandler_openPosition_getOrderType( ! signedTicker , isToReverse ); double maxPositionValue = this.account.GetMarketValue() / this.numberOfPositionsToBeChosen; long sharesToBeTraded = OneRank.MaxBuyableShares( ticker , ! maxPositionValue , this.account.DataStreamer ); this.account.AddOrder( new Order( orderType , ! new Instrument( ticker ) , sharesToBeTraded ) ); } ! private void marketCloseEventHandler_openPositions() { bool isToReverse = this.isToReverse(); foreach ( string signedTicker in this.chosenTickers.Keys ) ! this.marketCloseEventHandler_openPosition( signedTicker , isToReverse ); } ! private void marketCloseEventHandler_closePosition( string ticker ) { *************** *** 275,279 **** return todayReturnForPortfolioPositions < 0; } ! private void fiveMinutesBeforeMarketCloseEventHandler_closePositions_actually() { ArrayList tickers = new ArrayList(); --- 279,283 ---- return todayReturnForPortfolioPositions < 0; } ! private void marketCloseEventHandler_closePositions_actually() { ArrayList tickers = new ArrayList(); *************** *** 281,306 **** tickers.Add( ticker ); foreach ( string ticker in tickers ) ! fiveMinutesBeforeMarketCloseEventHandler_closePosition( ticker ); } ! private void fiveMinutesBeforeMarketCloseEventHandler_closePositions() { if ( this.arePositionsToBeClosed() ) ! this.fiveMinutesBeforeMarketCloseEventHandler_closePositions_actually(); } ! public void FiveMinutesBeforeMarketCloseEventHandler( ! Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) { if ( this.account.Portfolio.Count == 0 ) ! fiveMinutesBeforeMarketCloseEventHandler_openPositions(); else { if ( this.arePositionsToBeClosed() ) { ! this.fiveMinutesBeforeMarketCloseEventHandler_closePositions(); ! this.fiveMinutesBeforeMarketCloseEventHandler_openPositions(); } } } #endregion } } --- 285,322 ---- tickers.Add( ticker ); foreach ( string ticker in tickers ) ! marketCloseEventHandler_closePosition( ticker ); } ! private void marketCloseEventHandler_closePositions() { if ( this.arePositionsToBeClosed() ) ! this.marketCloseEventHandler_closePositions_actually(); } ! protected override void marketCloseEventHandler( ! Object sender , DateTime dateTime ) { if ( this.account.Portfolio.Count == 0 ) ! marketCloseEventHandler_openPositions(); else { if ( this.arePositionsToBeClosed() ) { ! this.marketCloseEventHandler_closePositions(); ! this.marketCloseEventHandler_openPositions(); } } } #endregion + + protected override void marketOpenEventHandler( + Object sender , DateTime dateTime ) + { + ; + } + + protected override void oneHourAfterMarketCloseEventHandler( + Object sender , DateTime dateTime ) + { + ; + } } } Index: WFMultiOneRankEligibleTickers.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardMultiOneRank/WFMultiOneRankEligibleTickers.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** WFMultiOneRankEligibleTickers.cs 19 Feb 2006 17:50:29 -0000 1.2 --- WFMultiOneRankEligibleTickers.cs 29 Sep 2008 21:20:54 -0000 1.3 *************** *** 38,42 **** private int numberEligibleTickersToBeChosen; private int numberDaysForPerformanceCalculation; ! private IEndOfDayTimer endOfDayTimer; private DataTable eligibleTickers; --- 38,42 ---- private int numberEligibleTickersToBeChosen; private int numberDaysForPerformanceCalculation; ! private Timer endOfDayTimer; private DataTable eligibleTickers; *************** *** 52,56 **** int numberEligibleTickersToBeChosen , int numberDaysForPerformanceCalculation , ! IEndOfDayTimer endOfDayTimer ) { this.tickerGroupID = tickerGroupID; --- 52,56 ---- int numberEligibleTickersToBeChosen , int numberDaysForPerformanceCalculation , ! Timer endOfDayTimer ) { this.tickerGroupID = tickerGroupID; *************** *** 65,69 **** private DataTable setTickers_build_getSelectedTickers() { ! DateTime dateTime = this.endOfDayTimer.GetCurrentTime().DateTime; // SelectorByGroup selectorByGroup = // new SelectorByGroup( "SP500" , dateTime ); --- 65,69 ---- private DataTable setTickers_build_getSelectedTickers() { ! DateTime dateTime = this.endOfDayTimer.GetCurrentDateTime(); // SelectorByGroup selectorByGroup = // new SelectorByGroup( "SP500" , dateTime ); Index: WFMultiOneRankChosenTickers.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardMultiOneRank/WFMultiOneRankChosenTickers.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** WFMultiOneRankChosenTickers.cs 12 Nov 2005 18:39:33 -0000 1.1 --- WFMultiOneRankChosenTickers.cs 29 Sep 2008 21:20:54 -0000 1.2 *************** *** 40,44 **** private int numberOfTickersInPortfolio; private int inSampleDays; ! private IEndOfDayTimer endOfDayTimer; private int generationNumberForGeneticOptimizer; private int populationSizeForGeneticOptimizer; --- 40,44 ---- private int numberOfTickersInPortfolio; private int inSampleDays; ! private Timer endOfDayTimer; private int generationNumberForGeneticOptimizer; private int populationSizeForGeneticOptimizer; *************** *** 50,54 **** int numberOfTickersInPortfolio , int inSampleDays , ! IEndOfDayTimer endOfDayTimer , int generationNumberForGeneticOptimizer , int populationSizeForGeneticOptimizer --- 50,54 ---- int numberOfTickersInPortfolio , int inSampleDays , ! Timer endOfDayTimer , int generationNumberForGeneticOptimizer , int populationSizeForGeneticOptimizer *************** *** 87,91 **** DateTime firstDate = ! this.endOfDayTimer.GetCurrentTime().DateTime.AddDays( -( this.inSampleDays - 1 ) ); --- 87,91 ---- DateTime firstDate = ! this.endOfDayTimer.GetCurrentDateTime().AddDays( -( this.inSampleDays - 1 ) ); *************** *** 94,98 **** eligibleTickers.EligibleTickers , firstDate , ! this.endOfDayTimer.GetCurrentTime().DateTime , this.numberOfTickersInPortfolio , 0.0 ); --- 94,98 ---- eligibleTickers.EligibleTickers , firstDate , ! this.endOfDayTimer.GetCurrentDateTime() , this.numberOfTickersInPortfolio , 0.0 ); Index: RunWalkForwardMultiOneRank.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardMultiOneRank/RunWalkForwardMultiOneRank.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** RunWalkForwardMultiOneRank.cs 14 Mar 2006 14:51:12 -0000 1.4 --- RunWalkForwardMultiOneRank.cs 29 Sep 2008 21:20:54 -0000 1.5 *************** *** 3,7 **** RunWalkForwardOneRank.cs ! Copyright (C) 2003 Glauco Siliprandi --- 3,7 ---- RunWalkForwardOneRank.cs ! Copyright (C) 2003 Glauco Siliprandi *************** *** 19,23 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! */ using System; --- 19,23 ---- along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! */ using System; *************** *** 51,56 **** public class RunWalkForwardMultiOneRank : Script { ! private IHistoricalQuoteProvider historicalQuoteProvider; ! private ReportTable reportTable; private string tickerGroupID; --- 51,56 ---- public class RunWalkForwardMultiOneRank : Script { ! private HistoricalMarketValueProvider historicalMarketValueProvider; ! private ReportTable reportTable; private string tickerGroupID; *************** *** 68,72 **** private WFMultiOneRankEndOfDayTimerHandler endOfDayTimerHandler; private Account account; ! private IEndOfDayTimer endOfDayTimer; private DateTime startingTimeForScript; --- 68,72 ---- private WFMultiOneRankEndOfDayTimerHandler endOfDayTimerHandler; private Account account; ! private QuantProject.Business.Timing.Timer endOfDayTimer; private DateTime startingTimeForScript; *************** *** 103,110 **** // public event NewProgressEventHandler OutOfSampleNewProgress; ! #region Run private void run_initializeHistoricalQuoteProvider() { ! this.historicalQuoteProvider = new HistoricalAdjustedQuoteProvider(); this.startingTimeForScript = DateTime.Now; --- 103,110 ---- // public event NewProgressEventHandler OutOfSampleNewProgress; ! #region Run private void run_initializeHistoricalQuoteProvider() { ! this.historicalMarketValueProvider = new HistoricalAdjustedQuoteProvider(); this.startingTimeForScript = DateTime.Now; *************** *** 112,129 **** private void run_initializeEndOfDayTimer() { ! EndOfDayDateTime endOfDayDateTime = ! new EndOfDayDateTime( firstDateTime , ! EndOfDaySpecificTime.MarketOpen ); this.endOfDayTimer = ! new IndexBasedEndOfDayTimer( endOfDayDateTime , ! this.benchmark ); } private void run_initializeAccount() { this.account = new Account( "WalkForwardOneRank" , this.endOfDayTimer , ! new HistoricalEndOfDayDataStreamer( this.endOfDayTimer , ! this.historicalQuoteProvider ) , ! new HistoricalEndOfDayOrderExecutor( this.endOfDayTimer , ! this.historicalQuoteProvider ) ); } private void run_initializeEndOfDayTimerHandler() --- 112,130 ---- private void run_initializeEndOfDayTimer() { ! DateTime dateTime = ! HistoricalEndOfDayTimer.GetMarketOpen( this.firstDateTime ); ! // new EndOfDayDateTime( firstDateTime , ! // EndOfDaySpecificTime.MarketOpen ); this.endOfDayTimer = ! new IndexBasedEndOfDayTimer( dateTime , ! this.benchmark ); } private void run_initializeAccount() { this.account = new Account( "WalkForwardOneRank" , this.endOfDayTimer , ! new HistoricalEndOfDayDataStreamer( this.endOfDayTimer , ! this.historicalMarketValueProvider ) , ! new HistoricalEndOfDayOrderExecutor( this.endOfDayTimer , ! this.historicalMarketValueProvider ) ); } private void run_initializeEndOfDayTimerHandler() *************** *** 131,143 **** this.endOfDayTimerHandler = new WFMultiOneRankEndOfDayTimerHandler( ! this.tickerGroupID , ! this.benchmark , ! this.numberEligibleTickers , ! this.numberOfPortfolioPositions , ! this.numberDaysForInSampleOptimization , ! this.numDaysBetweenEachOptimization , ! this.account , ! this.generationNumberForGeneticOptimizer , ! this.populationSizeForGeneticOptimizer ); // this.endOfDayTimerHandler = new EndOfDayTimerHandler( 4 , 3 , 2 , 100 , 30 , // this.account ); --- 132,144 ---- this.endOfDayTimerHandler = new WFMultiOneRankEndOfDayTimerHandler( ! this.tickerGroupID , ! this.benchmark , ! this.numberEligibleTickers , ! this.numberOfPortfolioPositions , ! this.numberDaysForInSampleOptimization , ! this.numDaysBetweenEachOptimization , ! this.account , ! this.generationNumberForGeneticOptimizer , ! this.populationSizeForGeneticOptimizer ); // this.endOfDayTimerHandler = new EndOfDayTimerHandler( 4 , 3 , 2 , 100 , 30 , // this.account ); *************** *** 159,207 **** new InSampleNewProgressEventHandler( this.inSampleNewProgressEventHandler ); } #region oneHourAfterMarketCloseEventHandler private void oneHourAfterMarketCloseEventHandler_handleProgessBarForm( ! IEndOfDayTimer endOfDayTimer ) { string progress = "Current out of sample date:" + ! endOfDayTimer.GetCurrentTime().DateTime.ToString() + " - " + "First date:" + this.firstDateTime.ToString() + " - " + "Last date:" + this.lastDateTime.ToString(); Console.WriteLine( progress ); ! } ! public void marketOpenEventHandler( ! Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) ! { ! if ( this.account.Transactions.Count == 0 ) ! this.account.AddCash( 30000 ); ! } ! public void oneHourAfterMarketCloseEventHandler( ! Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) { ! if ( ( ( ( IEndOfDayTimer )sender ).GetCurrentTime().DateTime > ! this.lastDateTime ) || ! ( DateTime.Now >= ! this.startingTimeForScript.AddHours( this.maxRunningHours ) ) ) { // the simulation has reached the ending date ! this.account.EndOfDayTimer.Stop(); // this.progressBarForm.Close(); // ObjectArchiver.Archive( this.account , // @"C:\Documents and Settings\Glauco\Desktop\reports\final.qP" ); DateTime lastReportDateTime = this.lastDateTime; ! if ( ( ( IEndOfDayTimer )sender ).GetCurrentTime().DateTime < ! lastReportDateTime ) lastReportDateTime = ! ( ( IEndOfDayTimer )sender ).GetCurrentTime().DateTime; ! Report report = new Report( this.account , this.historicalQuoteProvider ); ! report.Create( "WFT One Rank" , 1 , ! new EndOfDayDateTime( lastReportDateTime , ! EndOfDaySpecificTime.OneHourAfterMarketClose ) , this.benchmark ); WFMultiOneRankReportDebugger wFMultiOneRankReportDebugger = new WFMultiOneRankReportDebugger( this.numberOfPortfolioPositions , ! this.numberDaysForInSampleOptimization , this.benchmark ); report.TransactionGrid.MouseUp += new MouseEventHandler( ! wFMultiOneRankReportDebugger.MouseClickEventHandler ); report.Show(); } --- 160,212 ---- new InSampleNewProgressEventHandler( this.inSampleNewProgressEventHandler ); } + + public void marketOpenEventHandler( + Object sender , DateTime sateTime ) + { + if ( this.account.Transactions.Count == 0 ) + this.account.AddCash( 30000 ); + } + #region oneHourAfterMarketCloseEventHandler private void oneHourAfterMarketCloseEventHandler_handleProgessBarForm( ! QuantProject.Business.Timing.Timer endOfDayTimer ) { string progress = "Current out of sample date:" + ! endOfDayTimer.GetCurrentDateTime().ToString() + " - " + "First date:" + this.firstDateTime.ToString() + " - " + "Last date:" + this.lastDateTime.ToString(); Console.WriteLine( progress ); ! } ! private void oneHourAfterMarketCloseEventHandler( ! Object sender , DateTime dateTime ) { ! if ( ( ( ( QuantProject.Business.Timing.Timer )sender ).GetCurrentDateTime() > ! this.lastDateTime ) || ! ( DateTime.Now >= ! this.startingTimeForScript.AddHours( this.maxRunningHours ) ) ) { // the simulation has reached the ending date ! this.account.Timer.Stop(); // this.progressBarForm.Close(); // ObjectArchiver.Archive( this.account , // @"C:\Documents and Settings\Glauco\Desktop\reports\final.qP" ); DateTime lastReportDateTime = this.lastDateTime; ! if ( ( ( QuantProject.Business.Timing.Timer )sender ).GetCurrentDateTime() < ! lastReportDateTime ) lastReportDateTime = ! ( ( QuantProject.Business.Timing.Timer )sender ).GetCurrentDateTime(); ! Report report = new Report( this.account , this.historicalMarketValueProvider ); ! report.Create( ! "WFT One Rank" , 1 , ! HistoricalEndOfDayTimer.GetMarketClose( lastReportDateTime ) , ! // new EndOfDayDateTime( lastReportDateTime , ! // EndOfDaySpecificTime.OneHourAfterMarketClose ) , this.benchmark ); WFMultiOneRankReportDebugger wFMultiOneRankReportDebugger = new WFMultiOneRankReportDebugger( this.numberOfPortfolioPositions , ! this.numberDaysForInSampleOptimization , this.benchmark ); report.TransactionGrid.MouseUp += new MouseEventHandler( ! wFMultiOneRankReportDebugger.MouseClickEventHandler ); report.Show(); } *************** *** 209,228 **** // the simulation has not reached the ending date, yet this.oneHourAfterMarketCloseEventHandler_handleProgessBarForm( ! ( IEndOfDayTimer )sender ); } #endregion private void run_addEventHandlers() { ! this.endOfDayTimer.MarketOpen += ! new MarketOpenEventHandler( this.marketOpenEventHandler ); ! this.endOfDayTimer.FiveMinutesBeforeMarketClose += ! new FiveMinutesBeforeMarketCloseEventHandler( ! this.endOfDayTimerHandler.FiveMinutesBeforeMarketCloseEventHandler ); ! this.endOfDayTimer.OneHourAfterMarketClose += ! new OneHourAfterMarketCloseEventHandler( ! this.endOfDayTimerHandler.OneHourAfterMarketCloseEventHandler ); ! this.endOfDayTimer.OneHourAfterMarketClose += ! new OneHourAfterMarketCloseEventHandler( ! this.oneHourAfterMarketCloseEventHandler ); } public override void Run() --- 214,251 ---- // the simulation has not reached the ending date, yet this.oneHourAfterMarketCloseEventHandler_handleProgessBarForm( ! ( QuantProject.Business.Timing.Timer )sender ); } #endregion + + private void newDateTimeEventHandler( + Object sender , DateTime dateTime ) + { + if ( HistoricalEndOfDayTimer.IsMarketOpen( dateTime ) ) + this.marketOpenEventHandler( sender , dateTime ); + // if ( HistoricalEndOfDayTimer.IsMarketClose( dateTime ) ) + // this.marketCloseEventHandler( sender , dateTime ); + if ( HistoricalEndOfDayTimer.IsOneHourAfterMarketClose( dateTime ) ) + this.oneHourAfterMarketCloseEventHandler( sender , dateTime ); + } + + private void run_addEventHandlers() { ! this.endOfDayTimer.NewDateTime += ! new NewDateTimeEventHandler( this.newDateTimeEventHandler ); ! this.endOfDayTimer.NewDateTime += ! new NewDateTimeEventHandler( this.endOfDayTimerHandler.NewDateTimeEventHandler ); ! ! // this.endOfDayTimer.MarketOpen += ! // new MarketOpenEventHandler( this.marketOpenEventHandler ); ! // this.endOfDayTimer.FiveMinutesBeforeMarketClose += ! // new FiveMinutesBeforeMarketCloseEventHandler( ! // this.endOfDayTimerHandler.FiveMinutesBeforeMarketCloseEventHandler ); ! // this.endOfDayTimer.OneHourAfterMarketClose += ! // new OneHourAfterMarketCloseEventHandler( ! // this.endOfDayTimerHandler.OneHourAfterMarketCloseEventHandler ); ! // this.endOfDayTimer.OneHourAfterMarketClose += ! // new OneHourAfterMarketCloseEventHandler( ! // this.oneHourAfterMarketCloseEventHandler ); } public override void Run() *************** *** 238,242 **** this.endOfDayTimer.Start(); } ! #endregion } } --- 261,265 ---- this.endOfDayTimer.Start(); } ! #endregion } } |