/* * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using Newtonsoft.Json; using QuantConnect.Orders; using QuantConnect.Packets; using System.Collections.Generic; namespace QuantConnect { /// /// Base class for backtesting and live results that packages result data. /// /// /// public class Result { /// /// Charts updates for the live algorithm since the last result packet /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public IDictionary Charts { get; set; } /// /// Order updates since the last result packet /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public IDictionary Orders { get; set; } /// /// OrderEvent updates since the last result packet /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public List OrderEvents { get; set; } /// /// Trade profit and loss information since the last algorithm result packet /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public IDictionary ProfitLoss { get; set; } /// /// Statistics information sent during the algorithm operations. /// /// Intended for update mode -- send updates to the existing statistics in the result GUI. If statistic key does not exist in GUI, create it [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public IDictionary Statistics { get; set; } /// /// Runtime banner/updating statistics in the title banner of the live algorithm GUI. /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public IDictionary RuntimeStatistics { get; set; } /// /// State of the result packet. /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public IDictionary State { get; set; } /// /// Server status information, including CPU/RAM usage, ect... /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public IDictionary ServerStatistics { get; set; } /// /// The algorithm's configuration required for report generation /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public AlgorithmConfiguration AlgorithmConfiguration { get; set; } /// /// Creates new empty instance /// public Result() { } /// /// Creates a new result from the given parameters /// public Result(BaseResultParameters parameters) { Charts = parameters.Charts; Orders = parameters.Orders; ProfitLoss = parameters.ProfitLoss; Statistics = parameters.Statistics; RuntimeStatistics = parameters.RuntimeStatistics; OrderEvents = parameters.OrderEvents; AlgorithmConfiguration = parameters.AlgorithmConfiguration; State = parameters.State; } } }