/******************************************************** * PUBLIC CONSTRUCTOR *********************************************************/ /// <summary> /// Console result handler constructor. /// </summary> /// <remarks>Setup the default sampling and notification periods based on the backtest length.</remarks> public ConsoleResultHandler(AlgorithmNodePacket packet) { FinalStatistics = new Dictionary<string, string>(); Log.Trace("Launching Console Result Handler: QuantConnect v2.0"); Messages = new ConcurrentQueue<Packet>(); Charts = new ConcurrentDictionary<string, Chart>(); _chartLock = new Object(); _isActive = true; // we expect one of two types here, the backtest node packet or the live node packet if (packet is BacktestNodePacket) { var backtest = packet as BacktestNodePacket; _algorithmNode = new BacktestConsoleStatusHandler(backtest); } else { var live = packet as LiveNodePacket; if (live == null) { throw new ArgumentException("Unexpected AlgorithmNodeType: " + packet.GetType().Name); } _algorithmNode = new LiveConsoleStatusHandler(live); } _resamplePeriod = _algorithmNode.ComputeSampleEquityPeriod(); //Notification Period for pushes: _notificationPeriod = TimeSpan.FromSeconds(5); }
/// <summary> /// Initialize the result handler with this result packet. /// </summary> /// <param name="packet">Algorithm job packet for this result handler</param> /// <param name="messagingHandler"></param> /// <param name="api"></param> /// <param name="dataFeed"></param> /// <param name="setupHandler"></param> /// <param name="transactionHandler"></param> public void Initialize(AlgorithmNodePacket packet, IMessagingHandler messagingHandler, IApi api, IDataFeed dataFeed, ISetupHandler setupHandler, ITransactionHandler transactionHandler) { // we expect one of two types here, the backtest node packet or the live node packet var job = packet as BacktestNodePacket; if (job != null) { _algorithmNode = new BacktestConsoleStatusHandler(job); } else { var live = packet as LiveNodePacket; if (live == null) { throw new ArgumentException("Unexpected AlgorithmNodeType: " + packet.GetType().Name); } _algorithmNode = new LiveConsoleStatusHandler(live); } _resamplePeriod = _algorithmNode.ComputeSampleEquityPeriod(); var time = DateTime.Now.ToString("yyyy-MM-dd-HH-mm"); _chartDirectory = Path.Combine("../../../Charts/", packet.AlgorithmId, time); if (Directory.Exists(_chartDirectory)) { foreach (var file in Directory.EnumerateFiles(_chartDirectory, "*.csv", SearchOption.AllDirectories)) { File.Delete(file); } Directory.Delete(_chartDirectory, true); } Directory.CreateDirectory(_chartDirectory); _messagingHandler = messagingHandler; }
/******************************************************** * PUBLIC CONSTRUCTOR *********************************************************/ /// <summary> /// Console result handler constructor. /// </summary> /// <remarks>Setup the default sampling and notification periods based on the backtest length.</remarks> public ConsoleResultHandler(AlgorithmNodePacket packet) { FinalStatistics = new Dictionary <string, string>(); Log.Trace("Launching Console Result Handler: QuantConnect v2.0"); Messages = new ConcurrentQueue <Packet>(); Charts = new ConcurrentDictionary <string, Chart>(); _chartLock = new Object(); _isActive = true; // we expect one of two types here, the backtest node packet or the live node packet if (packet is BacktestNodePacket) { var backtest = packet as BacktestNodePacket; _algorithmNode = new BacktestConsoleStatusHandler(backtest); } else { var live = packet as LiveNodePacket; if (live == null) { throw new ArgumentException("Unexpected AlgorithmNodeType: " + packet.GetType().Name); } _algorithmNode = new LiveConsoleStatusHandler(live); } _resamplePeriod = _algorithmNode.ComputeSampleEquityPeriod(); //Notification Period for pushes: _notificationPeriod = TimeSpan.FromSeconds(5); }