[Quantproject-developers] QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardOneRank RunWalkFor
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2008-09-29 21:22:09
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardOneRank In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv19021 Modified Files: RunWalkForwardOneRank.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: RunWalkForwardOneRank.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardOneRank/RunWalkForwardOneRank.cs,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** RunWalkForwardOneRank.cs 15 Oct 2005 18:21:01 -0000 1.11 --- RunWalkForwardOneRank.cs 29 Sep 2008 21:21:47 -0000 1.12 *************** *** 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,65 **** public class RunWalkForwardOneRank : Script , IWalkForwardProgressNotifier { ! private IHistoricalQuoteProvider historicalQuoteProvider = new HistoricalAdjustedQuoteProvider(); ! private ReportTable reportTable; ! private EndOfDayDateTime startDateTime; ! private EndOfDayDateTime endDateTime; int numberDaysForPerformanceCalculation; ! private int numIntervalDays; ! private ProgressBarForm progressBarForm; private EndOfDayTimerHandler endOfDayTimerHandler; --- 51,65 ---- public class RunWalkForwardOneRank : Script , IWalkForwardProgressNotifier { ! private HistoricalMarketValueProvider historicalMarketValueProvider = new HistoricalAdjustedQuoteProvider(); ! private ReportTable reportTable; ! private DateTime startDateTime; ! private DateTime endDateTime; int numberDaysForPerformanceCalculation; ! private int numIntervalDays; ! private ProgressBarForm progressBarForm; private EndOfDayTimerHandler endOfDayTimerHandler; *************** *** 67,79 **** private Account account; ! private IEndOfDayTimer endOfDayTimer; public RunWalkForwardOneRank() { this.reportTable = new ReportTable( "Summary_Reports" ); ! this.startDateTime = new EndOfDayDateTime( ! new DateTime( 2002 , 1 , 1 ) , EndOfDaySpecificTime.MarketOpen ); ! this.endDateTime = new EndOfDayDateTime( ! new DateTime( 2002 , 12 , 31 ) , EndOfDaySpecificTime.OneHourAfterMarketClose ); this.numberDaysForPerformanceCalculation = 120; this.numIntervalDays = 1; --- 67,85 ---- private Account account; ! private QuantProject.Business.Timing.Timer endOfDayTimer; public RunWalkForwardOneRank() { this.reportTable = new ReportTable( "Summary_Reports" ); ! this.startDateTime = ! HistoricalEndOfDayTimer.GetMarketClose( ! new DateTime( 2002 , 1 , 1 ) ); ! // new EndOfDayDateTime( ! // new DateTime( 2002 , 1 , 1 ) , EndOfDaySpecificTime.MarketOpen ); ! this.endDateTime = ! HistoricalEndOfDayTimer.GetOneHourAfterMarketClose( ! new DateTime( 2002 , 12 , 31 ) ); ! // new EndOfDayDateTime( ! // new DateTime( 2002 , 12 , 31 ) , EndOfDaySpecificTime.OneHourAfterMarketClose ); this.numberDaysForPerformanceCalculation = 120; this.numIntervalDays = 1; *************** *** 83,87 **** public event NewProgressEventHandler OutOfSampleNewProgress; ! #region Run private void run_initializeEndOfDayTimer() { --- 89,93 ---- public event NewProgressEventHandler OutOfSampleNewProgress; ! #region Run private void run_initializeEndOfDayTimer() { *************** *** 92,105 **** { this.account = new Account( "WalkForwardOneRank" , this.endOfDayTimer , ! new HistoricalEndOfDayDataStreamer( this.endOfDayTimer , ! this.historicalQuoteProvider ) , ! new HistoricalEndOfDayOrderExecutor( this.endOfDayTimer , ! this.historicalQuoteProvider ) ); } private void run_initializeEndOfDayTimerHandler() { this.endOfDayTimerHandler = new EndOfDayTimerHandler( 400 , 20 , 5 , ! this.numberDaysForPerformanceCalculation , 30 , ! this.account ); // this.endOfDayTimerHandler = new EndOfDayTimerHandler( 4 , 3 , 2 , 100 , 30 , // this.account ); --- 98,111 ---- { this.account = new Account( "WalkForwardOneRank" , this.endOfDayTimer , ! new HistoricalEndOfDayDataStreamer( this.endOfDayTimer , ! this.historicalMarketValueProvider ) , ! new HistoricalEndOfDayOrderExecutor( this.endOfDayTimer , ! this.historicalMarketValueProvider ) ); } private void run_initializeEndOfDayTimerHandler() { this.endOfDayTimerHandler = new EndOfDayTimerHandler( 400 , 20 , 5 , ! this.numberDaysForPerformanceCalculation , 30 , ! this.account ); // this.endOfDayTimerHandler = new EndOfDayTimerHandler( 4 , 3 , 2 , 100 , 30 , // this.account ); *************** *** 128,141 **** new InSampleNewProgressEventHandler( this.inSampleNewProgressEventHandler ); } #region oneHourAfterMarketCloseEventHandler private void oneHourAfterMarketCloseEventHandler_handleProgessBarForm( ! IEndOfDayTimer endOfDayTimer ) { ! long elapsedDays = Convert.ToInt64( ((TimeSpan)( endOfDayTimer.GetCurrentTime().DateTime - ! this.startDateTime.DateTime )).TotalDays ); ! double totalDays = Convert.ToDouble( ((TimeSpan)( this.endDateTime.DateTime - ! this.startDateTime.DateTime )).TotalDays + 1); if ( Math.Floor( elapsedDays / totalDays * 100 ) > ! Math.Floor( ( elapsedDays - 1 ) / totalDays * 100 ) ) { // a new out of sample time percentage point has been elapsed --- 134,155 ---- new InSampleNewProgressEventHandler( this.inSampleNewProgressEventHandler ); } + + public void marketOpenEventHandler( + Object sender , DateTime dateTime ) + { + if ( this.account.Transactions.Count == 0 ) + this.account.AddCash( 30000 ); + } + #region oneHourAfterMarketCloseEventHandler private void oneHourAfterMarketCloseEventHandler_handleProgessBarForm( ! QuantProject.Business.Timing.Timer endOfDayTimer ) { ! long elapsedDays = Convert.ToInt64( ((TimeSpan)( endOfDayTimer.GetCurrentDateTime() - ! this.startDateTime )).TotalDays ); ! double totalDays = Convert.ToDouble( ((TimeSpan)( this.endDateTime - ! this.startDateTime )).TotalDays + 1); if ( Math.Floor( elapsedDays / totalDays * 100 ) > ! Math.Floor( ( elapsedDays - 1 ) / totalDays * 100 ) ) { // a new out of sample time percentage point has been elapsed *************** *** 146,158 **** } } ! public void marketOpenEventHandler( ! Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) ! { ! if ( this.account.Transactions.Count == 0 ) ! this.account.AddCash( 30000 ); ! } ! #region oneHourAfterMarketCloseEventHandler private void showOneRankForm( object sender , ! MouseEventArgs eventArgs ) { DataGrid dataGrid = (DataGrid)sender; --- 160,167 ---- } } ! ! #region mouseEventHandler private void showOneRankForm( object sender , ! MouseEventArgs eventArgs ) { DataGrid dataGrid = (DataGrid)sender; *************** *** 177,192 **** } #endregion ! public void oneHourAfterMarketCloseEventHandler( ! Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) { ! if ( ( ( IEndOfDayTimer )sender ).GetCurrentTime().DateTime > ! this.endDateTime.DateTime ) { // 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" ); ! Report report = new Report( this.account , this.historicalQuoteProvider ); report.Create( "WFT One Rank" , this.numIntervalDays , this.endDateTime , "MSFT" ); report.TransactionGrid.MouseUp += --- 186,202 ---- } #endregion ! ! private void oneHourAfterMarketCloseEventHandler( ! Object sender , DateTime dateTime ) { ! if ( ( ( QuantProject.Business.Timing.Timer )sender ).GetCurrentDateTime() > ! this.endDateTime ) { // 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" ); ! Report report = new Report( this.account , this.historicalMarketValueProvider ); report.Create( "WFT One Rank" , this.numIntervalDays , this.endDateTime , "MSFT" ); report.TransactionGrid.MouseUp += *************** *** 197,203 **** // the simulation has not reached the ending date, yet this.oneHourAfterMarketCloseEventHandler_handleProgessBarForm( ! ( IEndOfDayTimer )sender ); } #endregion public override void Run() { --- 207,226 ---- // 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 ); + } + + public override void Run() { *************** *** 207,225 **** run_initializeProgressBar(); run_initializeProgressHandlers(); ! this.endOfDayTimer.MarketOpen += ! new MarketOpenEventHandler( this.marketOpenEventHandler ); ! this.endOfDayTimer.OneHourAfterMarketClose += ! new OneHourAfterMarketCloseEventHandler( ! this.endOfDayTimerHandler.OneHourAfterMarketCloseEventHandler ); ! this.endOfDayTimer.OneHourAfterMarketClose += ! new OneHourAfterMarketCloseEventHandler( ! this.oneHourAfterMarketCloseEventHandler ); ! this.endOfDayTimer.FiveMinutesBeforeMarketClose += ! new FiveMinutesBeforeMarketCloseEventHandler( ! this.endOfDayTimerHandler.FiveMinutesBeforeMarketCloseEventHandler ); // this.progressBarForm.Show(); this.endOfDayTimer.Start(); } ! #endregion } } --- 230,254 ---- run_initializeProgressBar(); run_initializeProgressHandlers(); ! this.endOfDayTimer.NewDateTime += ! new NewDateTimeEventHandler( this.newDateTimeEventHandler ); ! this.endOfDayTimer.NewDateTime += ! new NewDateTimeEventHandler( this.endOfDayTimerHandler.NewDateTimeEventHandler ); ! ! // this.endOfDayTimer.MarketOpen += ! // new MarketOpenEventHandler( this.marketOpenEventHandler ); ! // this.endOfDayTimer.OneHourAfterMarketClose += ! // new OneHourAfterMarketCloseEventHandler( ! // this.endOfDayTimerHandler.OneHourAfterMarketCloseEventHandler ); ! // this.endOfDayTimer.OneHourAfterMarketClose += ! // new OneHourAfterMarketCloseEventHandler( ! // this.oneHourAfterMarketCloseEventHandler ); ! // this.endOfDayTimer.FiveMinutesBeforeMarketClose += ! // new FiveMinutesBeforeMarketCloseEventHandler( ! // this.endOfDayTimerHandler.FiveMinutesBeforeMarketCloseEventHandler ); ! // this.progressBarForm.Show(); this.endOfDayTimer.Start(); } ! #endregion } } |