private static bool Boot(string[] args) { Environment.CurrentDirectory = System.AppDomain.CurrentDomain.BaseDirectory; bool help = false; bool sync = false; var p = new OptionSet() { { "sync|s", v => sync = v != null }, { "h|?|help", v => help = v != null }, }; try { List <string> extra = p.Parse(args); if (help) { Console.WriteLine( string.Format("无参数:执行MT4Proxy服务\n" + "s|sync执行当天数据聚合\nh|?|help:显示帮助信息")); return(false); } var logger = Utils.CommonLog; MT4CliWrapper.MT4Wrapper.OnLog += (a) => { logger.Info(a); }; if (Environment.Is64BitProcess) { logger.Warn("警告,在64位环境启动"); } else { logger.Info("启动环境是32位"); } logger.Info("准备启动MT4池"); Poll.StartPoll(); ServerContainer.ForkServer <DockServer>(); ServerContainer.ForkServer <TimeServer>(); if (sync) { ServerContainer.ForkServer <SyncServer>(); var syncer = new SyncServer(); syncer.SyncSummary(); syncer.SyncEquity(); #if TESTENV syncer.SyncMaster(30, 500000, 599999); #else syncer.SyncMaster(30, 851000, 859999); syncer.SyncMaster(360, 850001, 850999, "contest_master", 100, new Func <int, double>((mt4) => { using (var api = Poll.New()) { var equity = 0.0; var balance = 0.0; var free = 0.0; api.GetEquity(mt4, ref equity, ref free, ref balance); return(balance / 10000); } } )); #endif Poll.StopPoll(); return(false); } ServerContainer.ForkServer <PumpServer>(); logger.Info("准备启动Zmq监听服务"); ServerContainer.ForkServer <ZmqServer>(); logger.Info("初始工作已完成"); return(true); } catch (OptionException e) { Console.Write("参数格式不正确: "); Console.WriteLine(e.Message); Console.WriteLine("请使用 --help 命令获取更多信息."); return(false); } catch (Exception e) { var logger = Utils.CommonLog; logger.Error(string.Format("SyncError:{0}\n{1}", e.Message, e.StackTrace)); } return(false); }