/// <summary> /// Send a compile request: /// </summary> public PacketCompile Compile(int id) { PacketCompile packet = new PacketCompile(); try { var request = new RestRequest("compiler/create", Method.POST); request.AddParameter("application/json", JsonConvert.SerializeObject(new { projectId = id }), ParameterType.RequestBody); packet = Execute <PacketCompile>(request); } catch (Exception err) { Console.WriteLine("QuantConnect.RestAPI.Compile(): " + err.Message); } return(packet); }
/// <summary> /// Backtest project on QC /// </summary> /// <param name="compile"></param> /// <param name="projectID"></param> public static string GetBacktestID(PacketCompile compile, int projectID) { string backtestID = ""; string projectName = DateTime.Now.ToString() + " " + ProjectName; PacketBacktest backtestResult = API.Backtest(projectID, compile.CompileId, projectName); if (backtestResult.Errors.Count > 0 && backtestResult.Errors[0].Contains("Please upgrade your account")) { RateLimitReached = true; return(backtestID); } else { backtestID = backtestResult.BacktestId; } return(backtestID); }
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(); }
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); } }