Exemple #1
0
        private void HandleBacktestResultPacket(Packet packet)
        {
            var backtestResultEventModel = (BacktestResultPacket)packet;
            var backtestResultUpdate     = _resultFactory.FromBacktestResult(backtestResultEventModel.Results);

            _result.Add(backtestResultUpdate);
            _syncContext.Send(o => _sessionHandler.HandleResult(_result), null);
        }
        private void HandleBacktestResultPacket(Packet packet)
        {
            var backtestResultEventModel = (BacktestResultPacket)packet;
            var backtestResultUpdate     = _resultConverter.FromBacktestResult(backtestResultEventModel.Results);

            _result.Add(backtestResultUpdate);

            var context = new ResultContext
            {
                Name     = Name,
                Result   = _result,
                Progress = backtestResultEventModel.Progress
            };

            _syncContext.Send(o => _sessionHandler.HandleResult(context), null);

            if (backtestResultEventModel.Progress == 1 && _closeAfterCompleted)
            {
                _syncContext.Send(o => Unsubscribe(), null);
            }
        }
        private void ReadFromFile()
        {
            if (!File.Exists(Name))
            {
                throw new Exception($"File '{Name}' does not exist");
            }

            var file = File.ReadAllText(Name);
            var json = JObject.Parse(file);

            // First we try to get thre sults part from a bigger JSON.
            // This can be the case when downloaded from QC.
            try
            {
                JToken resultToken;
                if (json.TryGetValue("results", out resultToken))
                {
                    // Remove the profit-loss part. This is causing problems when downloaded from QC.
                    // TODO: Investigate the problem with the ProfitLoss entry
                    var pl = resultToken.Children().FirstOrDefault(c => c.Path == "results.ProfitLoss");
                    pl?.Remove();

                    // Convert back to string. Our deserializer will get the results part.
                    file = resultToken.ToString();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                // We could not parse results from the JSON. Continue and try to parse normally
            }

            Result result;

            try
            {
                var backtestResult = JsonConvert.DeserializeObject <BacktestResult>(file);
                result = _resultFactory.FromBacktestResult(backtestResult);
            }
            catch (Exception ex)
            {
                throw new Exception("The file is no valid Backtest result", ex);
            }

            _resultHandler.HandleResult(result);
        }
Exemple #4
0
        private void ReadFromFile()
        {
            if (!File.Exists(Name))
            {
                throw new Exception($"File '{Name}' does not exist");
            }

            var file   = File.ReadAllText(Name);
            var result = _resultSerializer.Deserialize(file);

            var context = new ResultContext
            {
                Name     = Name,
                Result   = result,
                Progress = 1
            };

            _sessionHandler.HandleResult(context);
        }
Exemple #5
0
        private async Task FetchBacktestResult()
        {
            var resultUpdate = await _apiClient.GetResultAsync(_parameters.ProjectId, _parameters.InstanceId,
                                                               ResultType.Backtest);

            _result.Add(resultUpdate.Result);

            var context = new ResultContext
            {
                Result   = _result,
                Progress = resultUpdate.Progress, // Somehow current API has NULL in this field
                Project  = resultUpdate.Project,  // Somehow current API has NULL in this field
                Name     = resultUpdate.Name ?? Name
            };

            _syncContext.Send(o => _sessionHandler.HandleResult(context), null);

            if (resultUpdate.Completed)
            {
                // Unsubscribe as this backtest has completed (and we have parsed all data)
                _syncContext.Send(o => Unsubscribe(), null);
            }
        }