Ejemplo n.º 1
0
        /// <summary>
        /// Notifier for the ToolWindow to inform backtest has finished
        /// </summary>
        /// <param name="projectId">Target project id</param>
        /// <param name="backtestStatus">Backtest current status</param>
        public void BacktestFinished(int projectId, Api.Backtest backtestStatus)
        {
            var window = _package.FindToolWindow(typeof(ToolWindow1), 0, false);

            // Only notify if the toolWindow was open
            if (window != null)
            {
                var windowController = (ToolWindow1Control)window.Content;
                windowController.BacktestFinished(projectId, backtestStatus);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Updates backtest Progress in the backtest data grid (UI)
        /// </summary>
        /// <param name="projectId">Target project id</param>
        /// <param name="backtestStatus">Backtest current status</param>
        public void BacktestStatusUpdated(int projectId, Api.Backtest backtestStatus)
        {
            var selectedItem = projectNameBox.SelectedItem as ProjectNameDialog.ComboboxItem;

            // Verify the backtest is from the selected project
            if (selectedItem?.ProjectId == projectId)
            {
                foreach (DataGridItem item in _dataGridCollection)
                {
                    if (item.BacktestId == backtestStatus.BacktestId)
                    {
                        item.Progress = backtestStatus.Progress;
                        break;
                    }
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Creates new backtest, row, in the backtest data grid (UI)
        /// </summary>
        /// <param name="projectId">Target project id</param>
        /// <param name="backtestStatus">Backtest current status</param>
        public void BacktestCreated(int projectId, Api.Backtest backtestStatus)
        {
            var selectedItem = projectNameBox.SelectedItem as ProjectNameDialog.ComboboxItem;

            // Verify the backtest is from the selected project
            if (selectedItem?.ProjectId == projectId)
            {
                _dataGridCollection.Insert(0, new DataGridItem
                {
                    Name       = backtestStatus.Name,
                    Progress   = 0,
                    ProjectId  = projectId,
                    BacktestId = backtestStatus.BacktestId,
                    Date       = backtestStatus.Created,
                    Status     = DataGridItem.BacktestInProgress
                });
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Updates backtest Status and Progress in the backtest data grid (UI)
        /// </summary>
        /// <param name="projectId">Target project id</param>
        /// <param name="backtestStatus">Backtest current status</param>
        public void BacktestFinished(int projectId, Api.Backtest backtestStatus)
        {
            var selectedItem = projectNameBox.SelectedItem as ProjectNameDialog.ComboboxItem;

            // Verify the backtest is from the selected project
            if (selectedItem?.ProjectId == projectId)
            {
                foreach (DataGridItem item in _dataGridCollection)
                {
                    if (item.BacktestId == backtestStatus.BacktestId)
                    {
                        var success = string.IsNullOrEmpty(backtestStatus.Error) &&
                                      string.IsNullOrEmpty(backtestStatus.StackTrace);
                        item.Status   = success ? DataGridItem.BacktestSucceeded : DataGridItem.BacktestFailed;
                        item.Progress = backtestStatus.Progress;
                        break;
                    }
                }
            }
        }
        private void SendForBacktestingCallback(object sender, EventArgs e)
        {
            ExecuteOnProject(sender, (selectedProjectId, selectedProjectName, files) =>
            {
                var fileNames = files.Select(f => f.FileName).ToList();

                VsUtils.DisplayInStatusBar(this.ServiceProvider, "Uploading files to server ...");
                UploadFilesToServer(selectedProjectId, files);

                VsUtils.DisplayInStatusBar(this.ServiceProvider, "Compiling project ...");
                var compileStatus = CompileProjectOnServer(selectedProjectId);
                if (compileStatus.State == Api.CompileState.BuildError)
                {
                    VsUtils.DisplayInStatusBar(this.ServiceProvider, "Compile error.");
                    VsUtils.ShowMessageBox(this.ServiceProvider, "Compile Error", "Error when compiling project.");
                    return;
                }

                VsUtils.DisplayInStatusBar(this.ServiceProvider, "Backtesting project ...");
                Api.Backtest backtest = BacktestProjectOnServer(selectedProjectId, compileStatus.CompileId);
                // Errors are not being transfered in response, so client can't tell if the backtest failed or not.
                // This response error handling code will not work but should.

                /* if (backtest.Errors.Count != 0) {
                 *  VsUtils.DisplayInStatusBar(this.ServiceProvider, "Backtest error.");
                 *  showMessageBox("Backtest Error", "Error when backtesting project.");
                 *  return;
                 * }*/

                VsUtils.DisplayInStatusBar(this.ServiceProvider, "Backtest complete.");
                var projectUrl = string.Format(
                    CultureInfo.CurrentCulture,
                    "https://www.quantconnect.com/terminal/#open/{0}",
                    selectedProjectId
                    );
                Process.Start(projectUrl);
            });
        }