Ejemplo n.º 1
0
        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);
            }
        }