public void RedirectsWriteAndWriteLine() { var messages = new List<string>(); Action<string> redirector = s => messages.Add(s); var writer = new FuncTextWriter(redirector); writer.Write("message"); Assert.AreEqual(1, messages.Count); Assert.AreEqual("message", messages[0]); writer.WriteLine("message2"); Assert.AreEqual(2, messages.Count); Assert.AreEqual("message2", messages[1]); }
public void RedirectsConsoleOutAndError() { var messages = new List<string>(); Action<string> redirector = s => messages.Add(s); var writer = new FuncTextWriter(redirector); Console.SetOut(writer); Console.SetError(writer); Console.WriteLine("message"); Assert.AreEqual(1, messages.Count); Assert.AreEqual("message", messages[0]); Console.Error.WriteLine("message2"); Assert.AreEqual(2, messages.Count); Assert.AreEqual("message2", messages[1]); }
/// <summary> /// Set the Algorithm instance for ths result. /// </summary> /// <param name="algorithm">Algorithm we're working on.</param> /// <remarks>While setting the algorithm the backtest result handler.</remarks> public void SetAlgorithm(IAlgorithm algorithm) { _algorithm = algorithm; //Setup the sampling periods: _jobDays = Time.TradeableDates(Algorithm.Securities, _job.PeriodStart, _job.PeriodFinish); //Setup Debug Messaging: _debugMessageMax = Convert.ToInt32(10 * _jobDays); //Minimum 100 messages per backtest: if (_debugMessageMax < _debugMessageMin) _debugMessageMax = _debugMessageMin; //Messaging for the log messages: _debugMessagePeriod = "backtest"; //Set the security / market types. var types = new List<SecurityType>(); foreach (var security in _algorithm.Securities.Values) { if (!types.Contains(security.Type)) types.Add(security.Type); } SecurityType(types); // we need to forward Console.Write messages to the algorithm's Debug function var debug = new FuncTextWriter(algorithm.Debug); var error = new FuncTextWriter(algorithm.Error); Console.SetOut(debug); Console.SetError(error); }
/// <summary> /// Set the algorithm of the result handler after its been initialized. /// </summary> /// <param name="algorithm">Algorithm object matching IAlgorithm interface</param> public void SetAlgorithm(IAlgorithm algorithm) { _algorithm = algorithm; var types = new List<SecurityType>(); foreach (var security in _algorithm.Securities.Values) { if (!types.Contains(security.Type)) types.Add(security.Type); } SecurityType(types); // we need to forward Console.Write messages to the algorithm's Debug function var debug = new FuncTextWriter(algorithm.Debug); var error = new FuncTextWriter(algorithm.Error); Console.SetOut(debug); Console.SetError(error); }
/// <summary> /// Set the Algorithm instance for ths result. /// </summary> /// <param name="algorithm">Algorithm we're working on.</param> /// <remarks>While setting the algorithm the backtest result handler.</remarks> public void SetAlgorithm(IAlgorithm algorithm) { _algorithm = algorithm; //Get the resample period: var totalMinutes = (_job.PeriodFinish - _job.PeriodStart).TotalMinutes; var resampleMinutes = (totalMinutes < (_minimumSamplePeriod * _samples)) ? _minimumSamplePeriod : (totalMinutes / _samples); // Space out the sampling every _resamplePeriod = TimeSpan.FromMinutes(resampleMinutes); Log.Trace("BacktestingResultHandler(): Sample Period Set: " + resampleMinutes.ToString("00.00")); //Setup the sampling periods: _jobDays = Time.TradeableDates(Algorithm.Securities.Values, _job.PeriodStart, _job.PeriodFinish); //Setup Debug Messaging: _debugMessageMax = Convert.ToInt32(10 * _jobDays); //Minimum 100 messages per backtest: if (_debugMessageMax < _debugMessageMin) _debugMessageMax = _debugMessageMin; //Messaging for the log messages: _debugMessagePeriod = "backtest"; //Set the security / market types. var types = new List<SecurityType>(); foreach (var security in _algorithm.Securities.Values) { if (!types.Contains(security.Type)) types.Add(security.Type); } SecurityType(types); // we need to forward Console.Write messages to the algorithm's Debug function var debug = new FuncTextWriter(algorithm.Debug); var error = new FuncTextWriter(algorithm.Error); Console.SetOut(debug); Console.SetError(error); }