/// <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); }
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]); }
/// <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 = Algorithm.Securities.Count > 0 ? Time.TradeableDates(Algorithm.Securities.Values, _job.PeriodStart, _job.PeriodFinish) : Convert.ToInt32((_job.PeriodFinish.Date - _job.PeriodStart.Date).TotalDays) + 1; //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 kvp in _algorithm.Securities) { var security = kvp.Value; if (!types.Contains(security.Type)) { types.Add(security.Type); } } SecurityType(types); if (Config.GetBool("forward-console-messages", true)) { // 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); } }
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]); }
public ConsoleLeveledOutput() { Info = Console.Out; Warn = new FuncTextWriter(line => { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(line); Console.ResetColor(); }); Error = new FuncTextWriter(line => { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(line); Console.ResetColor(); ErrorMessageWritten = true; }); }
/// <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); }