[Quantproject-developers] QuantProject/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOs
Brought to you by:
glauco_1
|
From: Marco M. <mi...@us...> - 2008-04-08 22:03:05
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOscillators/PortfolioValueOscillator In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv14571/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOscillators/PortfolioValueOscillator Modified Files: PVO_OTCStrategy.cs Log Message: NumDaysBetweenEachOptimization now stands for calendar days (optimization is launched the same days as the PairTrading strategy) Index: PVO_OTCStrategy.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOscillators/PortfolioValueOscillator/PVO_OTCStrategy.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** PVO_OTCStrategy.cs 1 Apr 2008 21:34:52 -0000 1.2 --- PVO_OTCStrategy.cs 8 Apr 2008 22:03:00 -0000 1.3 *************** *** 78,81 **** --- 78,82 ---- protected PVOPositions pvoPositionsForOutOfSample; protected DateTime lastCloseDate; + protected DateTime lastOptimizationDateTime; protected Account account; public Account Account *************** *** 294,298 **** { PVO_OTCLogItem logItem = ! new PVO_OTCLogItem( this.now() ); logItem.BestPVOPositionsInSample = this.chosenPVOPositions; --- 295,299 ---- { PVO_OTCLogItem logItem = ! new PVO_OTCLogItem( this.now() , this.inSampleDays ); logItem.BestPVOPositionsInSample = this.chosenPVOPositions; *************** *** 371,374 **** --- 372,391 ---- } + private bool optimalTestingPositionsAreToBeUpdated() + { + bool areToBeUpdated = false; + if(this.inSampleChooser != null) + { + DateTime dateTimeForNextOptimization = + this.lastOptimizationDateTime.AddDays( + this.numDaysBetweenEachOptimization ); + areToBeUpdated = + ( ( ( this.account.Portfolio.Count == 0 ) + && ( ( this.lastOptimizationDateTime == DateTime.MinValue ) ) ) || + ( this.now().DateTime >= dateTimeForNextOptimization ) ); + } + return areToBeUpdated; + } + /// <summary> /// Handles a "One hour after market close" event. *************** *** 381,393 **** this.lastCloseDate = endOfDayTimingEventArgs.EndOfDayDateTime.DateTime; this.numDaysElapsedSinceLastOptimization++; ! if((this.numDaysElapsedSinceLastOptimization == ! this.numDaysBetweenEachOptimization)) ! //num days without optimization has elapsed { this.updateTestingPositions(endOfDayTimingEventArgs.EndOfDayDateTime.DateTime); //sets tickers to be chosen next Market Close event this.numDaysElapsedSinceLastOptimization = 0; } - } #endregion --- 398,415 ---- this.lastCloseDate = endOfDayTimingEventArgs.EndOfDayDateTime.DateTime; this.numDaysElapsedSinceLastOptimization++; ! //OLD - numDaysBetweenEachOptimization --> market days ! // if( this.account.Transactions.Count <= 1 || ! // (this.numDaysElapsedSinceLastOptimization == ! // this.numDaysBetweenEachOptimization) ) ! //num days without optimization has elapsed or ! //no transaction, except for adding cash, has been executed ! //NEW - numDaysBetweenEachOptimization --> calendar days ! if ( this.optimalTestingPositionsAreToBeUpdated() ) { this.updateTestingPositions(endOfDayTimingEventArgs.EndOfDayDateTime.DateTime); //sets tickers to be chosen next Market Close event this.numDaysElapsedSinceLastOptimization = 0; + this.lastOptimizationDateTime = this.now().DateTime; } } #endregion |