Ejemplo n.º 1
0
        /// <summary>
        /// Refresh the data source, polling the API.
        /// </summary>
        private void timerRefresh_Tick(object sender, EventArgs e)
        {
            if (_processing)
            {
                return;
            }
            _processing = true;

            statusLabel.Text = "Updating Results for Backtest Id: " + _backtestId + "...";

            Async.Add(new APIJob(APICommand.BacktestResults, (backtestResult, errors) =>
            {
                //Handle login and API errors:
                switch (QuantConnectPlugin.HandleErrors(errors))
                {
                //Handle project specific actions with a login error:
                case APIErrors.NotLoggedIn:
                    this.SafeInvoke(d => d.ShowLogin(() => { FormOpenProject form = new FormOpenProject(); form.StartPosition = FormStartPosition.CenterScreen; form.Show(); }));
                    this.SafeInvoke(d => d.Close());
                    return;
                }

                //Handle Results Packet:
                PacketBacktestResult packet = (PacketBacktestResult)backtestResult;

                this.SafeInvoke(d => d.SetBacktestResult(packet));
            }, _backtestId)); // End of Async
        } // End of timer:
Ejemplo n.º 2
0
        /// <summary>
        /// Read this backtest result back:
        /// </summary>
        public PacketBacktestResult BacktestResults(string backtestId)
        {
            PacketBacktestResult packet = new PacketBacktestResult();

            try
            {
                var request = new RestRequest("backtests/read", Method.POST);
                request.AddParameter("application/json", JsonConvert.SerializeObject(new { backtestId = backtestId }), ParameterType.RequestBody);
                packet = Execute <PacketBacktestResult>(request);
            }
            catch (Exception err)
            {
                Console.WriteLine("QuantConnect.RestAPI.BacktestResults(): " + err.Message);
            }
            return(packet);
        }
Ejemplo n.º 3
0
        static async Task MainAsync(string[] args)
        {
            try
            {
                // Init the new API: email, password.
                API api = new API();

                await api.Authenticate("*****@*****.**", "demo123");

                Console.WriteLine("==========================================");
                Console.WriteLine("Test 1: Create Project: ");
                PacketCreateProject projectCreated = await api.ProjectCreate("New Test Project");

                Console.WriteLine("New Project Id: " + projectCreated.ProjectId);
                int newProjectId = projectCreated.ProjectId;

                Console.WriteLine("==========================================");
                Console.WriteLine("Test 2: List Projects: ");
                PacketProject projects = await api.ProjectList();

                foreach (Project project in projects.Projects)
                {
                    Console.WriteLine("Name: " + project.Name + " Id: " + project.Id + " Date: " + project.Modified.ToLongTimeString());
                }

                Console.WriteLine("==========================================");
                Console.WriteLine("Test 3: Update Our New Project: (Set new project as basic template strategy)");
                List <QCFile> files = new List <QCFile>();
                files.Add(new QCFile("Main.cs", System.IO.File.ReadAllText("demo.cs")));
                PacketBase updateSuccess = await api.ProjectUpdate(newProjectId, files);

                Console.WriteLine("Updated project: " + updateSuccess.Success);

                Console.WriteLine("==========================================");
                Console.WriteLine("Test 4: List Project Contents:");
                var projectFiles = await api.ProjectFiles(newProjectId);

                foreach (QCFile file in projectFiles.Files)
                {
                    Console.WriteLine("File Name: " + file.Name + " Contents: " + file.Code);
                }

                Console.WriteLine("==========================================");
                Console.WriteLine("Test 5: Compile Project:");
                PacketCompile compileResult = await api.Compile(newProjectId);

                Console.WriteLine("CompileId: " + compileResult.CompileId);
                foreach (CompileLog entry in compileResult.Logs)
                {
                    Console.WriteLine("Compile Result : Time: " + entry.Time + " Type: " + entry.Type.ToString() + " Entry: " + entry.Entry);
                }

                Console.WriteLine("==========================================");
                Console.WriteLine("Test 6: Backtest Compiled Project:");
                PacketBacktest backtestResult = await api.Backtest(newProjectId, compileResult.CompileId, "New Random Name!");

                Console.WriteLine("Backtest Id: " + backtestResult.BacktestId);

                Console.WriteLine("==========================================");
                Console.WriteLine("Test 7: Reading Backtest Results:");
                PacketBacktestResult readResult = await api.BacktestResults(backtestResult.BacktestId);

                Thread.Sleep(3000);
                foreach (Chart chart in readResult.Results.Charts.Values)
                {
                    Console.WriteLine("Result Chart Name: " + chart.Name);
                }

                Console.WriteLine("==========================================");
                Console.WriteLine("Test 8: Reading Backtest List:");
                PacketBacktestList backtestList = await api.BacktestList(newProjectId);

                foreach (var summary in backtestList.Summary)
                {
                    Console.WriteLine("Backtest: " + summary.BacktestId + " Requested: " + summary.Requested.ToShortDateString());

                    Console.WriteLine("==========================================");
                    Console.WriteLine("Test 9: Delete Backtest:");
                    PacketBase deleteBacktest = await api.BacktestDelete(summary.BacktestId);

                    if (deleteBacktest.Success)
                    {
                        Console.WriteLine("Deleted: " + summary.BacktestId);
                    }
                }

                Console.WriteLine("==========================================");
                Console.WriteLine("Test 8: Delete Project: ");
                PacketBase deleteSuccess = await api.ProjectDelete(newProjectId);

                Console.WriteLine("Deleted project: " + deleteSuccess.Success.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine("==========================================");
                Console.WriteLine(ex.ToString());
            }

            Console.ReadKey();
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Set the results:
 /// </summary>
 public void SetBacktestResult(PacketBacktestResult result)
 {
     this._results = result;
     this._backtestResultUpdated = true;
 }
Ejemplo n.º 5
0
        public static void Consumer()
        {
            while (true)
            {
                if (Queue.Count > 0)
                {
                    APIJob job;
                    if (Queue.TryDequeue(out job))
                    {
                        switch (job.Command)
                        {
                        case APICommand.Authenticate:
                            bool loggedIn = false;
                            if (job.Parameters.Length == 2)
                            {
                                loggedIn = QuantConnectPlugin.API.Authenticate((string)job.Parameters[0], (string)job.Parameters[1]);
                            }
                            job.Callback(loggedIn, new List <string>());
                            break;

                        case APICommand.ProjectList:
                            var            packet      = QuantConnectPlugin.API.ProjectList();
                            List <Project> projectList = new List <Project>();
                            if (packet.Projects != null)
                            {
                                projectList = packet.Projects;
                            }
                            job.Callback(projectList, packet.Errors);
                            break;

                        case APICommand.NewProject:
                            var projectCreate = QuantConnectPlugin.API.ProjectCreate(job.Parameters[0].ToString());
                            var newProject    = 0;
                            if (projectCreate.ProjectId != null)
                            {
                                newProject = projectCreate.ProjectId;
                            }
                            job.Callback(newProject, projectCreate.Errors);
                            break;

                        case APICommand.OpenProject:
                            var         files        = new PacketProjectFiles();
                            List <File> projectFiles = new List <File>();
                            if (job.Parameters.Length == 1)
                            {
                                files = QuantConnectPlugin.API.ProjectFiles((int)job.Parameters[0]);
                            }
                            if (files.Files != null)
                            {
                                projectFiles = files.Files;
                            }
                            job.Callback(projectFiles, files.Errors);
                            break;

                        case APICommand.CheckQCAlgoVersion:
                            bool latestversion = QuantConnectPlugin.API.CheckQCAlgorithmVersion();
                            job.Callback(latestversion, new List <string>());
                            break;

                        case APICommand.Compile:
                            QuantConnectPlugin.SaveToCloud(false);
                            var compile = new PacketCompile();
                            if (job.Parameters.Length == 1)
                            {
                                compile = QuantConnectPlugin.API.Compile((int)job.Parameters[0]);
                            }
                            job.Callback(compile, compile.Errors);
                            break;

                        case APICommand.UpdateTemplate:
                            job.Callback(true, new List <string>());
                            break;

                        case APICommand.BacktestResults:
                            var backtestResult = new PacketBacktestResult();
                            if (job.Parameters.Length == 1)
                            {
                                backtestResult = QuantConnectPlugin.API.BacktestResults((string)job.Parameters[0]);
                            }
                            job.Callback(backtestResult, backtestResult.Errors);
                            break;
                        }
                    }
                }
                Thread.Sleep(10);
            }
        }