[Quantproject-developers] QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardOneRank DataStreamer
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2004-11-29 16:03:45
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardOneRank In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18199/b7_Scripts/WalkForwardTesting/WalkForwardOneRank Modified Files: DataStreamerHandler.cs Log Message: Minor changes. This class will probably be removed. Index: DataStreamerHandler.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardOneRank/DataStreamerHandler.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** DataStreamerHandler.cs 28 Aug 2004 17:07:10 -0000 1.1 --- DataStreamerHandler.cs 29 Nov 2004 16:03:28 -0000 1.2 *************** *** 21,24 **** --- 21,25 ---- */ using System; + using System.Collections; using QuantProject.Business.Financial.Accounting; *************** *** 32,49 **** public class DataStreamerHandler { private Account account; public Account Account { get { return this.account; } } ! public DataStreamerHandler() { this.account = new Account( "Main" ); } public void NewQuoteEventHandler( Object sender , NewQuoteEventArgs eventArgs ) { } } } --- 33,120 ---- public class DataStreamerHandler { + private EligibleTickers eligibleTickers; + private BestPerformingTickers bestPerformingTickers; + private ChosenTickers chosenTickers; + + private int numberEligibleTickers = 100; + private int numberBestPeformingTickers = 20; + private int numberOfTickersToBeChosen = 5; + private int windowDays; + private Account account; + public int NumberEligibleTickers + { + get { return this.numberEligibleTickers; } + } + public int NumberBestPeformingTickers + { + get { return this.numberBestPeformingTickers; } + } public Account Account { get { return this.account; } } ! /// <summary> ! /// ! /// </summary> ! /// <param name="numberEligibleTickers">number of tickers to be chosen with the first selection: ! /// the best performers will be chosen among these first selected instruments</param> ! /// <param name="numberBestPeformingTickers">number of instruments to be chosen, as the best ! /// performers, among the eligible tickers</param> ! /// <param name="numberOfTickersToBeChosen">number of instruments to be chosen, ! /// among the best performers</param> ! /// <param name="windowDays">number of days between two consecutive ! /// best performing ticker calculation</param> ! public DataStreamerHandler( int numberEligibleTickers , int numberBestPeformingTickers , ! int numberOfTickersToBeChosen , int windowDays ) { + this.numberEligibleTickers = numberEligibleTickers; + this.numberBestPeformingTickers = numberBestPeformingTickers; + this.numberOfTickersToBeChosen = numberOfTickersToBeChosen; + this.windowDays = windowDays; + this.account = new Account( "Main" ); + + this.eligibleTickers = new EligibleTickers( numberEligibleTickers ); + this.bestPerformingTickers = new BestPerformingTickers( numberBestPeformingTickers ); + this.chosenTickers = new ChosenTickers( this.numberOfTickersToBeChosen ); + } + #region NewQuoteEventHandler + private void newQuoteEventHandler_orderChosenTickers_closePositions() + { + foreach ( Position position in this.account.Portfolio ) + if ( this.chosenTickers.Contains( position.Instrument.Key ) ) + { + this.account.ClosePosition( position , this.orderManager ); + } + } + private void newQuoteEventHandler_orderChosenTickers() + { + this.newQuoteEventHandler_orderChosenTickers_closePositions(); + this.newQuoteEventHandler_orderChosenTickers_openPositions(); } + /// <summary> + /// Handles a NewQuote event. + /// </summary> + /// <param name="sender"></param> + /// <param name="eventArgs"></param> public void NewQuoteEventHandler( Object sender , NewQuoteEventArgs eventArgs ) { + if ( ( this.eligibleTickers.Count == 0 ) || + ( eventArgs.Quote.ExtendedDateTime.DateTime.CompareTo( + this.bestPerformingTickers.LastUpdate.AddDays( this.windowDays ) ) >= 0 ) ) + // either eligible tickers have never been defined yet + // or this.windowDays days elapsed since last best performing tickers calculation + { + this.eligibleTickers.SetTickers( eventArgs.Quote.ExtendedDateTime.DateTime ); + this.bestPerformingTickers.SetTickers( this.eligibleTickers , + eventArgs.Quote.ExtendedDateTime.DateTime ); + } + this.chosenTickers.SetTickers( this.bestPerformingTickers ); + newQuoteEventHandler_orderChosenTickers(); } + #endregion } } |