Exemplo n.º 1
0
        public void run(bool goLive)
        {
            Bomb.unlessNull(runThread, () => "cannot run a system while another one is running");
            var markets    = gui.markets();
            var parameters = nullIfFails(() => gui.parameters(), () => "Parameters contains an invalid value!");

            if (parameters == null)
            {
                return;
            }
            if (hasContent(gui.systemId()) && !gui.systemId().Equals(parameters.get <string>("systemId")))
            {
                gui.alertUser("The system id in the System ID box and systemId in parameters do not match. did you forget to hit Load System?\nIf this was intentional, clear the Id box and run again.");
                return;
            }

            var startDate           = gui.startDate();
            var endDate             = gui.endDate();
            var slippageCalculator  = gui.slippageCalculator();
            var runInNativeCurrency = gui.runInNativeCurrency();

            runThread = new Thread(() => {
                Log.setContext("runSystem");
                runSystem(() => new SystemRunInfo(markets, parameters, startDate, endDate, slippageCalculator, runInNativeCurrency), goLive);
            });
            runThread.Start();
        }
Exemplo n.º 2
0
 public static void loadSystem(ResearchGUI gui)
 {
     try {
         var        systemId = int.Parse(gui.systemId());
         var        details  = Parameters.details(systemId);
         Parameters parameters;
         if (details.hasPv())
         {
             parameters = new Parameters {
                 { "systemId", systemId },
                 { "RunMode", (double)RunMode.LIVE }
             };
             gui.setMarkets(convert(list <Market>(details.liveSystem().markets()), market => market.name()));
         }
         else if (hasContent(gui.runNumber()))
         {
             parameters = new Parameters {
                 { "systemId", systemId },
                 { "RunNumber", int.Parse(gui.runNumber()) },
                 { "RunMode", (double)RunMode.STO }
             };
             gui.setMarkets(list <string>(MsivBacktestTable.BACKTEST.markets(details.siv(), details.stoId())));
         }
         else
         {
             parameters = new Parameters {
                 { "systemId", systemId },
                 { "RunMode", (double)RunMode.RIGHTEDGE }
             };
             each(list <string>(StrategyParameters.NAMES.names(details.siv().system())), name => parameters.Add(name, 0));
             gui.setMarkets(list <string>(MsivBacktestTable.BACKTEST.markets(details.siv(), details.stoId())));
         }
         gui.setRunNumberEnabled(details.hasValidStoDir());
         gui.setRunInNativeCurrency(details.runInNativeCurrency());
         gui.setParameters(parameters);
     } catch (Exception e) {
         gui.logAndAlert("failed to load system", e);
     }
 }