[Quantproject-developers] QuantProject/b4_Business/a2_Strategies BasicStrategyForBacktester.cs, 1.4
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2010-03-28 14:07:32
|
Update of /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17549/a2_Strategies Modified Files: BasicStrategyForBacktester.cs Log Message: A new protected member outOfSampleReturnIntervals has been added. Out of sample return intervals are updated whenever NewDateTimeEventHandler starts executing. An virtual implementation of arePositionsToBeOpened() is now given. Index: BasicStrategyForBacktester.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies/BasicStrategyForBacktester.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** BasicStrategyForBacktester.cs 10 Dec 2008 19:29:27 -0000 1.4 --- BasicStrategyForBacktester.cs 28 Mar 2010 14:07:24 -0000 1.5 *************** *** 51,55 **** protected int numDaysForInSampleOptimization; protected IIntervalsSelector intervalsSelectorForInSample; ! // protected IIntervalsSelector intervalsSelectorForOutOfSample; protected IEligiblesSelector eligiblesSelector; protected IInSampleChooser inSampleChooser; --- 51,55 ---- protected int numDaysForInSampleOptimization; protected IIntervalsSelector intervalsSelectorForInSample; ! protected IIntervalsSelector intervalsSelectorForOutOfSample; protected IEligiblesSelector eligiblesSelector; protected IInSampleChooser inSampleChooser; *************** *** 57,60 **** --- 57,61 ---- protected DateTime lastOptimizationDateTime; + protected ReturnIntervals outOfSampleReturnIntervals; private Account account; *************** *** 124,128 **** int numDaysForInSampleOptimization , IIntervalsSelector intervalsSelectorForInSample , ! // IIntervalsSelector intervalsSelectorForOutOfSample , IEligiblesSelector eligiblesSelector , IInSampleChooser inSampleChooser , --- 125,129 ---- int numDaysForInSampleOptimization , IIntervalsSelector intervalsSelectorForInSample , ! IIntervalsSelector intervalsSelectorForOutOfSample , IEligiblesSelector eligiblesSelector , IInSampleChooser inSampleChooser , *************** *** 133,137 **** this.numDaysForInSampleOptimization = numDaysForInSampleOptimization; this.intervalsSelectorForInSample = intervalsSelectorForInSample; ! // this.intervalsSelectorForOutOfSample = intervalsSelectorForOutOfSample; this.eligiblesSelector = eligiblesSelector; this.inSampleChooser = inSampleChooser; --- 134,138 ---- this.numDaysForInSampleOptimization = numDaysForInSampleOptimization; this.intervalsSelectorForInSample = intervalsSelectorForInSample; ! this.intervalsSelectorForOutOfSample = intervalsSelectorForOutOfSample; this.eligiblesSelector = eligiblesSelector; this.inSampleChooser = inSampleChooser; *************** *** 139,148 **** historicalMarketValueProviderForInSample; ! // this.returnIntervals = ! // new ReturnIntervals( this.intervalsSelectorForOutOfSample ); } #region NewDateTimeEventHandler #region updateOptimalTestingPositions --- 140,163 ---- historicalMarketValueProviderForInSample; ! this.outOfSampleReturnIntervals = ! new ReturnIntervals( this.intervalsSelectorForOutOfSample ); } #region NewDateTimeEventHandler + private void updateReturnIntervals() + { + DateTime currentDateTime = this.now(); + if ( this.outOfSampleReturnIntervals.Count == 0 ) + // no interval has been added yet + this.outOfSampleReturnIntervals.AppendFirstInterval( + currentDateTime ); + else + // at least one interval has already been added + if ( this.outOfSampleReturnIntervals.LastDateTime <= currentDateTime ) + this.outOfSampleReturnIntervals.AppendIntervalsToGoJustBeyond( + currentDateTime ); + } + #region updateOptimalTestingPositions *************** *** 241,255 **** protected abstract bool arePositionsToBeClosed(); ! protected abstract bool arePositionsToBeOpened(); protected abstract WeightedPositions getPositionsToBeOpened(); public void NewDateTimeEventHandler( Object sender , DateTime dateTime ) { if ( this.areOptimalWeightedPositionsToBeUpdated() ) this.updateOptimalTestingPositions(); - if ( ( dateTime.Month == 3 ) && ( dateTime.Day == 15 ) ) - { - ; - } if ( this.arePositionsToBeClosed() ) AccountManager.ClosePositions( this.account ); --- 256,285 ---- protected abstract bool arePositionsToBeClosed(); ! ! #region arePositionsToBeOpened ! protected ReturnInterval lastIntervalAppended() ! { ! ReturnInterval lastInterval = ! this.outOfSampleReturnIntervals[ this.outOfSampleReturnIntervals.Count - 1 ]; ! return lastInterval; ! } ! protected virtual bool arePositionsToBeOpened() ! { ! bool beginsTheLastInterval = ! ( this.now() == ! this.lastIntervalAppended().Begin ); ! bool areToBeOpened = ! ( beginsTheLastInterval && this.bestTestingPositionsInSample != null ); ! return ( beginsTheLastInterval ); ! } ! #endregion arePositionsToBeOpened ! protected abstract WeightedPositions getPositionsToBeOpened(); public void NewDateTimeEventHandler( Object sender , DateTime dateTime ) { + this.updateReturnIntervals(); if ( this.areOptimalWeightedPositionsToBeUpdated() ) this.updateOptimalTestingPositions(); if ( this.arePositionsToBeClosed() ) AccountManager.ClosePositions( this.account ); |