/// <summary> /// Submit a compile and project id for backtesting. /// </summary> public PacketBacktest Backtest(int projectId, string compileId, string backtestName) { PacketBacktest packet = new PacketBacktest(); try { var request = new RestRequest("backtests/create", Method.POST); request.AddParameter("application/json", JsonConvert.SerializeObject(new { projectId = projectId, compileId = compileId, backtestName = backtestName }), ParameterType.RequestBody); packet = Execute <PacketBacktest>(request); } catch (Exception err) { Console.WriteLine("QuantConnect.RestAPI.Backtest(): " + 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(); }