public SignalBase StartSignalExecution(string userName, SignalInitParams p, List <PortfolioAccount> accountInfos, Dictionary <string, byte[]> files) { SaveSignalData(userName, p.FullName, files, out var errors); if (!string.IsNullOrWhiteSpace(errors)) { Logger.Error(errors); return(null); } SignalBase signalBase = null; try { signalBase = CreateSignalInstance(userName, p.FullName); var res1 = signalBase.SetParameters(p.Parameters); var res2 = signalBase.Init(new Broker(_connector, userName, accountInfos, signalBase), _dataProvider, p.Selections, p.State, p.StrategyParameters); if (!res1 || !res2) { RemoveWorkingSignal(p.FullName, userName); } AddWorkingSignal(signalBase, userName); if (p.State == SignalState.Backtesting && p.BacktestSettings != null) { signalBase.StartBacktest(p.BacktestSettings); Console.WriteLine($"Scripting backtest started {signalBase.ShortName}"); return(signalBase); } Console.WriteLine($"Scripting started {signalBase.ShortName}"); return(signalBase); } catch (Exception ex) { Logger.Error(ex.Message, ex); if (signalBase != null) { RemoveWorkingSignal(p.FullName, userName); } return(null); } }
protected override void ExecuteCommand(CreateUserSignalRequest request) { var success = default(bool); var signalInitParams = new SignalInitParams { FullName = request.SignalName, BacktestSettings = request.BacktestSettings, StrategyParameters = request.StrategyParameters, Parameters = request.Parameters, Selections = request.Selections, State = request.InitialState }; Core.AddSignal(request.User, request.Files, new SignalInitParams { FullName = request.SignalName, BacktestSettings = request.BacktestSettings, StrategyParameters = request.StrategyParameters, Parameters = request.Parameters, Selections = request.Selections, State = request.InitialState }); success = PushStartCodeMessage(new StartSignalExecutionResponse { Id = request.SignalName, UserName = request.User.Login, Files = request.Files, SignalInitParams = signalInitParams, Portfolios = Core.GetPortfolios(request.User), AccountInfos = request.AccountInfos }); if (!success) { PushResponse(new ErrorMessageResponse(new Exception("Scripting failed to start. Services are offline")) { User = request.User }); } }