public TradingStrategyEvaluator( int numberOfAccounts, int accountId, ICapitalManager capitalManager, ITradingStrategy strategy, IDictionary <ParameterAttribute, object> strategyParameters, ITradingDataProvider provider, StockBlockRelationshipManager relationshipManager, TradingSettings settings, ILogger logger, StreamWriter dumpDataWriter) { if (numberOfAccounts <= 0 || accountId < 0 || accountId >= numberOfAccounts) { throw new ArgumentOutOfRangeException(); } if (strategy == null || provider == null || settings == null) { throw new ArgumentNullException(); } _numberOfAccounts = numberOfAccounts; _accountId = accountId; _strategy = strategy; _strategyParameterValues = strategyParameters; _provider = provider; _settings = settings; _equityManager = new EquityManager(capitalManager, _settings.PositionFrozenDays); _context = new StandardEvaluationContext(_provider, _equityManager, logger, settings, dumpDataWriter, relationshipManager); _tradingTracker = new TradingTracker(capitalManager.InitialCapital); }
public TradeMetricsCalculator( //StockNameTable nameTable, TradingTracker tracker, ITradingDataProvider provider, TradingSettings settings) { if (tracker == null) { throw new ArgumentNullException("history"); } if (provider == null) { throw new ArgumentNullException("provider"); } if (settings == null) { throw new ArgumentNullException("settings"); } var startDate = provider.GetFirstNonWarmupDataPeriods().Min(); var periods = provider.GetAllPeriodsOrdered().Where(d => d >= startDate).ToArray(); var endDate = periods.Last(); if (endDate.Date < endDate) { endDate.AddDays(1); } if (tracker.MinTransactionTime < startDate) { throw new ArgumentOutOfRangeException("the minimum transaction time in trading history is smaller than the start date of provider's data"); } if (tracker.MaxTransactionTime > endDate) { throw new ArgumentOutOfRangeException("the maximum transaction time in trading history is larger than the end date of provider's data"); } //_nameTable = nameTable; _dataProvider = provider; _settings = settings; _startDate = startDate; _endDate = endDate; _initialCapital = tracker.InitialCapital; _transactionHistory = tracker.TransactionHistory.ToArray(); _completedTransactionHistory = tracker.CompletedTransactionHistory.ToArray(); _periods = periods; }
public BlockTradingDetailSummarizer(TradingTracker tracker, ITradingDataProvider provider) { if (tracker == null) { throw new ArgumentNullException("history"); } if (provider == null) { throw new ArgumentNullException("provider"); } _dataProvider = provider; _transactionHistory = tracker.TransactionHistory.ToArray(); _periods = _dataProvider.GetAllPeriodsOrdered(); }