Beispiel #1
0
        static int Main(string[] args)
        {
            // setup and parse arguments
            Args.DescriptionPadding = 8;
            Args.AddArgument(OptTarget, "test", "test", "Target environment: 'debug', 'dev', 'test', 'labs', 'live', 'paris'");
            Args.AddArgument(OptLoop, "10", "10", "Loop count");

            Args.AddArgument("?", "This help page");
            Args.Notes.AppendLine("This tool tests Image Recognition queries");
            Args.Notes.AppendLine("");
            Args.Notes.AppendLine("Examples:");
            Args.Notes.AppendLine("IrTest -tar:test");
            Args.Notes.AppendLine("IrTest -tar:test -loop:50");

            // parse passed arguments
            if (!Args.Parse(args))
            {
                Logger.Warn("One or more invalid arguments was specified");
                return(1);
            }

            // show help if requested
            if (Args.IsSet("?") || Args.IsEmpty)
            {
                return(Args.ShowConsoleHelp());
            }

            string env = Args.GetValue(OptTarget).ToLower();

            int tries = 10;

            if (!int.TryParse(Args.GetValue(OptLoop), out tries))
            {
                Logger.Warn("Invalid loop value specified");
                return(1);
            }

            var url    = new LtuService(env).GetIrServerUrl();
            var appkey = new LtuService(env).GetApplicationKey();

            Logger.InfoFormat($"Env: {env}, Loops: {tries}");
            Logger.InfoFormat($"Url: {url}, App: {appkey}");
            Logger.InfoFormat("");
            var sw = new Stopwatch();

            sw.Start();
            for (int loop = 1; loop <= tries; loop++)
            {
                SearchImageFound(env, loop, tries);
                SearchImageNotFound(env, loop, tries);
            }
            sw.Stop();

            var ave = TimeSpan.FromTicks(sw.Elapsed.Ticks / (tries * 2));

            Logger.InfoFormat("Total elapsed time: {0}, Average: {1}", FormatTime(sw), FormatTime(ave));

            return(0);
        }
Beispiel #2
0
        public static void Main(string[] args)
        {
            ArgumentParser  argumentParser = new ArgumentParser(new ConsoleArgument());
            ConsoleArgument dirArg         = new ConsoleArgument("d", ArgumentValueType.STRING);
            ConsoleArgument diagnoseArg    = new ConsoleArgument("diagnose");

            argumentParser.AddArgument(dirArg);
            argumentParser.AddArgument(diagnoseArg);
            argumentParser.Parse(args);

            string moduleName = argumentParser.DefaultRule.StringValue;

            if (dirArg.IsSet)
            {
                DirName = dirArg.StringValue;
            }

            // 1 模块加载
            VMModule mainModule = ModuleLoader.AddModule(LoadModule(moduleName), false);

            // 2 执行静态构造
            StaticInitWatch.Start();
            foreach (var vmClass in ModuleLoader.Classes.Values)
            {
                vmClass.Methods.TryGetValue(MethodArea.Singleton.StaticConstructorNameAddress, out List <VMMethod> sinit);
                VMExecutor executor = ThreadManager.CreateThread();
                executor.Execute(sinit[0]);
                // TODO 静态构造是可以多线程的,但是如何回收堆栈呢?
                ThreadManager.CollectThreadSpace(executor);
            }
            StaticInitWatch.Stop();

            // 3 执行Main函数
            if (!mainModule.Classes.TryGetValue(MethodArea.Singleton.StringProgramAddress, out VMClass entryClass))
            {
                throw new XiVMError("Program.Main() not found");
            }
            if (!entryClass.Methods.TryGetValue(MethodArea.Singleton.StringMainAddress, out List <VMMethod> entryMethodGroup))
            {
                throw new XiVMError("Program.Main() not found");
            }
            VMMethod entryMethod = entryMethodGroup.Find(m => m.DescriptorAddress == MethodArea.Singleton.StringMainDescriptorAddress);

            if (entryMethod == null)
            {
                throw new XiVMError("Program.Main(System.String) not found");
            }
            VMExecutor mainThread = ThreadManager.CreateThread();

            mainThread.Execute(entryMethod, null);

            // 4 诊断信息
            if (diagnoseArg.IsSet)
            {
                DisplaDiagnoseIndo(mainThread.GetDiagnoseInfo());
            }
        }
        public void OptionalAfterPositional()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "foo");
            parser.AddArgument(name: "--bar");
            var args = parser.ParseArgs(new string[] { "1", "--bar", "2" });

            Assert.AreEqual(2, args.Count);
            Assert.AreEqual("1", args["foo"]);
            Assert.AreEqual("2", args["bar"]);
        }
        public void SubParserDefaults()
        {
            var parser = new ArgumentParser();

            parser.AddArgument("--foo", action: "toggle", help: "foo help");

            var subparsers = parser.AddSubparsers(help: "sub-command help");

            var parserA = subparsers.AddParser("a", help: "a help");

            parserA.AddArgument("bar", "single", help: "bar help");
            parserA.SetDefault("func", "FuncA()");

            var parserB = subparsers.AddParser("b", help: "b help");

            parserB.AddArgument("--baz", "single", help: "baz help");
            parserB.SetDefault("func", "FuncB()");

            var args = parser.ParseArgs(new string[] { "--foo", "b", "--baz", "1" });

            Assert.AreEqual("FuncB()", args["func"]);

            args = parser.ParseArgs(new string[] { "--foo", "a", "1" });
            Assert.AreEqual("FuncA()", args["func"]);
        }
        public void SubParserParentArgumentOrder()
        {
            var parser = new ArgumentParser();

            parser.AddArgument("--foo", action: "toggle", help: "foo help");

            var subparsers = parser.AddSubparsers(help: "sub-command help");

            var parserA = subparsers.AddParser("a", help: "a help");

            parserA.AddArgument("bar", "single", help: "bar help");

            var parserB = subparsers.AddParser("b", help: "b help");

            parserB.AddArgument("--baz", "single", help: "baz help");

            try
            {
                var args = parser.ParseArgs(new string[] { "a", "1", "--foo" });
                Assert.Fail("ArgumentParseException expected");
            }
            catch (ArgumentParseException e)
            {
                Assert.AreEqual("Unrecognized arguments: --foo", e.Message);
            }
        }
        public void SubParsers()
        {
            var parser = new ArgumentParser();

            parser.AddArgument("--foo", action: "toggle", help: "foo help");

            var subparsers = parser.AddSubparsers(help: "sub-command help");

            var parserA = subparsers.AddParser("a", help: "a help");

            parserA.AddArgument("bar", "single", help: "bar help");

            var parserB = subparsers.AddParser("b", help: "b help");

            parserB.AddArgument("--baz", "single", help: "baz help");

            var args = parser.ParseArgs(new string[] { "--foo", "b", "--baz", "1" });

            Assert.AreEqual(2, args.Count);
            Assert.AreEqual(true, args["foo"]);
            Assert.AreEqual("1", args["baz"]);

            args = parser.ParseArgs(new string[] { "--foo", "a", "1" });
            Assert.AreEqual(2, args.Count);
            Assert.AreEqual(true, args["foo"]);
            Assert.AreEqual("1", args["bar"]);
        }
        public void SubParserHelp()
        {
            var parser = new ArgumentParser();

            parser.ProgName    = "prog";
            parser.Description = "This is prog description.";
            parser.AddArgument("--foo", action: "toggle", help: "foo help");

            var subParsers = parser.AddSubparsers(help: "sub-command help");

            var parserA = subParsers.AddParser("a", help: "a help");

            parserA.AddArgument("bar", "single", help: "bar help");

            var parserB = subParsers.AddParser("b", help: "b help");

            parserB.AddArgument("--baz", "single", help: "baz help");

            var expected = @"Usage: prog [OPTION]... [ARG]...

This is prog description.

Positional arguments:
  command         sub-command help

Optional arguments:
  --foo           foo help".Replace("\r", string.Empty);

            Assert.AreEqual(expected, parser.HelpText);
        }
        public void ListOption()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "--foo", action: "list");
            parser.AddArgument(name: "--bar", action: "single");
            var args = parser.ParseArgs(new string[] { "--foo", "1", "2", "--bar", "3" });

            Assert.AreEqual(2, args.Count);
            Assert.IsTrue(args["foo"] is IList <string>);

            var l = args["foo"] as IList <string>;

            Assert.IsTrue(l.SequenceEqual(new List <string> {
                "1", "2"
            }));
        }
        public void ToggleOptionRepeatDoesNothing()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "--bar", action: "toggle");

            var args = parser.ParseArgs(new string[] { "--bar", "--bar" });

            Assert.AreEqual(1, args.Count);
            Assert.AreEqual(true, args["bar"]);
        }
        public void OptionRepeatOverrides()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "--bar", action: "single");

            var args = parser.ParseArgs(new string[] { "--bar", "1", "--bar", "2" });

            Assert.AreEqual(1, args.Count);
            Assert.AreEqual("2", args["bar"]);
        }
        public void OptionWithValue()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "--foo");

            var args = parser.ParseArgs(new string[] { "--foo", "1" });

            Assert.AreEqual(1, args.Count);
            Assert.IsTrue(args.ContainsKey("foo"));
            Assert.AreEqual("1", args["foo"]);
        }
        public void ToggleOptionDisabled()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "--bar", action: "toggle");

            var args = parser.ParseArgs(new string[] {});

            Assert.AreEqual(1, args.Count);
            Assert.IsTrue(args.ContainsKey("bar"));
            Assert.AreEqual(false, args["bar"]);
        }
        public void HelpTextWithArguments()
        {
            var parser = new ArgumentParser();

            parser.AddArgument("--foo", help: "foo help");
            parser.AddArgument("--bar", action: "toggle", help: "bar help");
            parser.AddArgument("spam", action: "single", help: "spam help");
            parser.ProgName    = "prog";
            parser.Description = "This is prog description.";

            var expected = @"Usage: prog [OPTION]... [ARG]...

This is prog description.

Positional arguments:
  spam            spam help

Optional arguments:
  --foo FOO       foo help
  --bar           bar help".Replace("\r", string.Empty);

            Assert.AreEqual(expected, parser.HelpText);
        }
        public void OverrideDefaults()
        {
            var parser = new ArgumentParser();

            parser.AddArgument("--foo", action: "single", help: "foo help");
            parser.SetDefault("foo", "12");
            parser.SetDefault("bar", "spam");

            var args = parser.ParseArgs(new string[] { "--foo", "a" });

            Assert.AreEqual(2, args.Count);
            Assert.AreEqual("a", args["foo"]);
            Assert.AreEqual("spam", args["bar"]);
        }
        public void UnknownOption()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "--foo");

            try
            {
                var args = parser.ParseArgs(new string[] { "--bar", "2" });
                Assert.Fail("ArgumentParseException expected");
            }
            catch (ArgumentParseException e)
            {
                Assert.AreEqual("Unrecognized arguments: --bar 2", e.Message);
            }
        }
        public void OptionWithMissingValue()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "--foo");

            try
            {
                var args = parser.ParseArgs(new string[] { "--foo" });
                Assert.Fail("ArgumentParseException expected");
            }
            catch (ArgumentParseException e)
            {
                Assert.AreEqual("Argument --foo: expected one argument", e.Message);
            }
        }
        public void PositionalMissing()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "bar");

            try
            {
                var args = parser.ParseArgs(new string[] {});
                Assert.Fail("ArgumentParseException expected");
            }
            catch (ArgumentParseException e)
            {
                Assert.AreEqual("the following arguments are required: bar", e.Message);
            }
        }
        public void ToggleOptionWithValueIsError()
        {
            var parser = new ArgumentParser();

            parser.AddArgument(name: "--bar", action: "toggle");

            try
            {
                var args = parser.ParseArgs(new string[] { "--bar", "1" });
                Assert.Fail("ArgumentParseException expected");
            }
            catch (ArgumentParseException e)
            {
                Assert.AreEqual("Unrecognized arguments: 1", e.Message);
            }
        }
Beispiel #19
0
        public static void Run(string[] args)
        {
            var parser = new ArgumentParser();

            parser.AddArgument("--foo", action: "toggle", help: "foo help");

            var subparsers = parser.AddSubparsers(help: "sub-command help");

            var parserA = subparsers.AddParser("a", help: "a help");

            parserA.AddArgument("bar", "single", help: "bar help");

            var parserB = subparsers.AddParser("b", help: "b help");

            parserB.AddArgument("--baz", "single", help: "baz help");

            if (args.Contains("--help"))
            {
                Console.WriteLine(parser.HelpText);
                Environment.Exit(0);
            }

            IDictionary <string, dynamic> parsedArgs = null;

            try
            {
                parsedArgs = parser.ParseArgs(args);
            }
            catch (ArgumentParseException e)
            {
                Console.WriteLine($"Error: {e.Message}");
                Environment.Exit(2);
            }

            foreach (var entry in parsedArgs)
            {
                if (entry.Value is IList <string> )
                {
                    var s = string.Join(", ", entry.Value as IList <string>);
                    Console.WriteLine($"> '{entry.Key}': '{s}'");
                }
                else
                {
                    Console.WriteLine($"> '{entry.Key}': '{entry.Value}'");
                }
            }
        }
Beispiel #20
0
        public static void Main(string[] args)
        {
            ArgumentParser  argumentParser = new ArgumentParser(new ConsoleArgument());
            ConsoleArgument dirArg         = new ConsoleArgument("d", ArgumentValueType.STRING);
            ConsoleArgument verboseArg     = new ConsoleArgument("verbose");

            argumentParser.AddArgument(dirArg);
            argumentParser.AddArgument(verboseArg);

            argumentParser.Parse(args);

            string moduleName = argumentParser.DefaultRule.StringValue;

            if (dirArg.IsSet)
            {
                DirName = dirArg.StringValue;
            }

            string fileName = null;

            foreach (string f in Directory.EnumerateFiles(DirName))
            {
                string fname = Path.GetFileName(f).ToString();
                if (fname.StartsWith(moduleName + "."))
                {
                    fileName = f;
                    break;  // TODO 不break,支持同模块多文件
                }
            }

            if (string.IsNullOrEmpty(fileName))
            {
                Console.Error.WriteLine($"Module {moduleName} not found in {DirName}");
                return;
            }

            string text = File.ReadAllText(fileName);

            TokenPassManager tokenPasses = new TokenPassManager(text);

            // 解析类信息之外的部分并生成AST
            AST root = (AST)tokenPasses.Run(new Parser());

            ASTPassManager astPasses = new ASTPassManager(root);

            //, 打印json文件
            if (verboseArg.IsSet)
            {
                string json = (string)astPasses.Run(new JsonPass());
                File.WriteAllText(fileName + ".ast.json", json);
            }

            // 编译生成ir与字节码,编译阶段会完成常量表达式的估值
            ModuleConstructor constructor = new ModuleConstructor(moduleName);

            ModuleHeaders.Add(moduleName, constructor.Module);
            List <Class> classes = (List <Class>)astPasses.Run(new ClassDeclarationPass(constructor));

            (List <Field> fields, List <Method> methods) = ((List <Field> fields, List <Method> methods))
                                                           astPasses.Run(new MemberDeclarationPass(constructor, classes));
            astPasses.Run(new CodeGenPass(constructor, classes, fields, methods));

            // 输出生成字节码
            constructor.Dump(DirName, verboseArg.IsSet);
        }
Beispiel #21
0
        static void Main(string[] args)
        {
            ArgumentParser argumentParser = new ArgumentParser(ArgumentParser.ArgumentFormat.KVP, true);

            argumentParser.AddArgument("key", ArgumentParser.ArgumentType.String);
            argumentParser.AddArgument("exkey", ArgumentParser.ArgumentType.String, true);
            argumentParser.AddArgument("proxy", ArgumentParser.ArgumentType.String, true);
            argumentParser.AddArgument("nPage", ArgumentParser.ArgumentType.Int);
            argumentParser.AddArgument("export", ArgumentParser.ArgumentType.String);
            argumentParser.Help =
                () => {
                Console.WriteLine("-key \"<keywords to search for>\"");
                Console.WriteLine("-exkey \"<keywords to exclude from search>\"");
                Console.WriteLine("-proxy \"<proxy:port or auto for automatic proxy selection, if omitted the program will not use a proxy>\"");
                Console.WriteLine("-nPage <number of pages to scan, -1 for all>");
                Console.WriteLine("-export <A csv file to where the data will be exported>");
            };

            string exkey = "";
            string key   = "";
            string proxy = "";
            int    npage = 0;
            string exportFile;

            try
            {
                ArgumentParser.ParsedArguments parsed = argumentParser.Parse(args);
                key        = parsed.StringArguments["key"][0];
                exportFile = parsed.StringArguments["export"][0];
                if (parsed.StringArguments.ContainsKey("exkey"))
                {
                    exkey = parsed.StringArguments["exkey"][0];
                }
                if (parsed.StringArguments.ContainsKey("proxy"))
                {
                    proxy = parsed.StringArguments["proxy"][0];
                }
                npage = parsed.IntArguments["npage"][0];
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return;
            }

            if (System.IO.File.Exists(exportFile))
            {
                Console.WriteLine("File '{0}' already exists!", exportFile);
                return;
            }

            bool autoProxy = false;
            Tuple <string, int> userProxy = null;

            try
            {
                if (proxy.ToLower() == "auto")
                {
                    autoProxy = true;
                }
                else
                {
                    userProxy = new Tuple <string, int>(proxy.Split(':')[0], int.Parse(proxy.Split(':')[1]));
                }
            }
            catch (Exception)
            {
                Console.WriteLine("Incorrect proxy format. Expected format: 'Address:Port' or auto");
                return;
            }

            OpenFishPort.OpenFish fish = new OpenFishPort.OpenFish();
            if (autoProxy)
            {
                fish.Get();
                Tuple <string, int, string, long>[] resp    = fish.GetResponseTimesMultiThreaded();
                Tuple <string, int, string, long>   optimal = resp.Where((x) => x.Item4 != -1).OrderBy((x) => x.Item4).First();
                if (optimal == null)
                {
                    Console.WriteLine("No proxies found!");
                    return;
                }
                Console.WriteLine("Using {0}:{1} ({2}) with {3}ms response", optimal.Item1, optimal.Item2, optimal.Item3, optimal.Item4);
            }

            EbayInterface.PageMode pageMode = EbayInterface.PageMode.Num;
            if (npage == -1)
            {
                pageMode = EbayInterface.PageMode.All;
            }

            EbayInterface.Search search = new EbayInterface.Search(key, pageMode, EbayInterface.IndexMode.ListingOnly, exkey, npage, userProxy);
            Console.WriteLine("Indexing Pages");
            string[] hrefs = search.GetAllPageHrefs();
            Console.WriteLine("Indexing Listings");
            EbayInterface.Listing[] listings = search.GetListingsMultiThreaded(hrefs);
            Console.WriteLine("Exporting");
            EbayInterface.ExportToCSV(listings, exportFile);


            //"23.237.173.102", 3128
            //EbayInterface.Search search = new EbayInterface.Search("apple charger", EbayInterface.PageMode.Num, EbayInterface.IndexMode.ListingOnly, "", 2, userProxy);
            //string[] hrefs = search.GetAllPageHrefs();
            //EbayInterface.Listing[] listings = search.GetListings(hrefs);

            //EbayInterface.SerializeToFile(listings, "export.xml");
            return;
        }
Beispiel #22
0
        public static void Run(string[] args)
        {
            var parser = new ArgumentParser
            {
                Description = "Example argument parsing program."
            };

            // Single string value.
            parser.AddArgument(
                name: "--foo",
                help: "Foo help.");

            // Long name parameter.
            parser.AddArgument(
                name: "--long-name-param",
                help: "Long named parameter.");

            // Boolean.
            parser.AddArgument(
                name: "--bar",
                action: "toggle",
                help: "Help on bar.");

            // A list.
            parser.AddArgument(
                name: "--list-one",
                action: "list",
                help: "A list parameter.");

            // Positional string value 1.
            parser.AddArgument(name: "spam", help: "The spam argument.");

            // Position string value 2.
            parser.AddArgument(name: "eggs", help: "Some help on eggs.");

            if (args.Contains("--help"))
            {
                Console.WriteLine(parser.HelpText);
                Environment.Exit(0);
            }

            IDictionary <string, dynamic> parsedArgs = null;

            try
            {
                parsedArgs = parser.ParseArgs(args);
            }
            catch (ArgumentParseException e)
            {
                Console.WriteLine($"Error: {e.Message}");
                Environment.Exit(2);
            }

            foreach (var entry in parsedArgs)
            {
                if (entry.Value is IList <string> )
                {
                    var s = string.Join(", ", entry.Value as IList <string>);
                    Console.WriteLine($"> '{entry.Key}': '{s}'");
                }
                else
                {
                    Console.WriteLine($"> '{entry.Key}': '{entry.Value}'");
                }
            }
        }
Beispiel #23
0
        static void Main(string[] args)
        {
            try
            {
                ArgumentParser parser = new ArgumentParser(new ParserSettings()
                {
                    Description = "OctoBot"
                });
                parser.AddArgument(new Argument("-v", "--version")
                {
                    HelpText = "Отображает текущую версию OctoBot.", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("-s", "--simulate")
                {
                    HelpText = "Принудительный запуск OctoBot только с симулятором торговых операций.", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("-rts", "--reset-trading-history")
                {
                    HelpText = "Принудительный сброс истории торговых операций. Теперь берется следующий портфель в качестве ориентира прибыльности, а симуляторы торговых операций будут использовать новый портфель.", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("-d", "--data_collector")
                {
                    HelpText = "Запуск процесс сбора данных, чтобы их использовать в тестировании на исторических данных.", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("-b", "--backtesting")
                {
                    HelpText = "Запуск OctoBot в режиме тестирования на исторических данных, используйте конфигурацию тестирования на исторических данных, сохраненную в config.json.", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("-ba", "--backtesting_analysis")
                {
                    HelpText = "Дополнительный аргумент для того, чтобы не останавливать бота в конце тестирования на исторических данных (полезно анализировать такие результаты, используя визуальные интерфейсы, например - веб-интерфейс).", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("-r", "--risk")
                {
                    Type = typeof(decimal), HelpText = "Принудительное определение значения конкретной конфигурации риска (от 0 до 1)."
                });
                parser.AddArgument(new Argument("-nw", "--no_web")
                {
                    HelpText = "Отключение запуска веб-интерфейса OctoBot.", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("-no", "--no_open_web")
                {
                    HelpText = "Отключение автоматического отрытия веб-интерфейса.", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("-nt", "--no_telegram")
                {
                    HelpText = "Запустите OctoBot без интерфейса Telegram, даже если учетные данные Telegram находятся в конфигурации. Интерфейс Telegram необходим для прослушивания сигналов Telegram и обсуждения с OctoBot по Telegram.", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("--encrypter")
                {
                    HelpText = "Запускаем обмен api ключей шифратора. Этот инструмент полезен для ручного добавления конфигурации бирж в ваш config.json без использования какого-либо интерфейса (т.е. веб-интерфейса, который автоматически обрабатывает шифрование).", ActionName = ActionNames.STORE_TRUE
                });
                parser.AddArgument(new Argument("-p", "--packager")
                {
                    HelpText = "Запуск OctoBot Tentacles Manager. Примеры: -p install all для установки всех пакетов tentacles и -p install [tentacle] для установки определенного tentacle. Tentacles Manager позволяет устанавливать, обновлять, удалять и сбрасывать tentacles. Вы можете указать ветви github с помощью branch = параметр. Вы также можете пропустить ввод подтверждения установки, добавив принудительный параметр. Используйте: -p help, чтобы получить справку Tentacle Manager.", ValueCount = new ValueCount("+")
                });
                parser.AddArgument(new Argument("-c", "--creator")
                {
                    HelpText = "Запуск OctoBot Tentacles Creator. Примеры: -c Evaluator для создания нового определения tentacle. Использование: -c help для получения помощи Tentacle Creator.", ValueCount = new ValueCount("+")
                });
                parser.AddArgument(new Argument("-o", "--strategy_optimizer")
                {
                    HelpText = "Запуск оптимизатора стратегий Octobot. Этот режим заставит октобота воспроизводить сценарии тестирования на исторических данных, расположенные в abstract_strategy_test.py с различными таймфреймами, определениями и рисками, используя режим торговли, заданный в config.json. Этот инструмент полезен для быстрого тестирования стратегии и автоматического поиска лучших совместимых настроек. Параметр - это название класса стратегии для тестирования. Пример: -o FullMixedStrategiesEvaluator Предупреждение: этот процесс может занять много времени.", ValueCount = new ValueCount("+")
                });

                var parseResult = parser.ParseArguments(args);

                StartCoreService(parseResult);
            }
            catch (Exception exc)
            {
                Debug.WriteLine(1);
            }

            Console.WriteLine("Hello World!");
        }
Beispiel #24
0
    public void Awake()
    {
        instance = this;
        Physics.autoSimulation = false;

        boxTransform = box.transform;

        // Define and read arguments
        ArgumentParser argParser = new ArgumentParser();

        argParser.AddArgument("-targetFrameRate", false, "50");
        argParser.AddArgument("-portAgentSend", false, "26001");
        argParser.AddArgument("-portAgentReceive", false, "26000");
        argParser.AddArgument("-controlRotation", false, "1");
        argParser.AddArgument("-controlVelocity", false, "0");
        argParser.AddArgument("-autoRollTarget", false, "1");
        argParser.AddArgument("-autoTargetMin", false, "-45");
        argParser.AddArgument("-autoTargetMax", false, "45");
        argParser.AddArgument("-rotStartMin", false, "-20");
        argParser.AddArgument("-rotStartMax", false, "20");
        argParser.AddArgument("-angVelStartMin", false, "-5");
        argParser.AddArgument("-angVelStartMax", false, "5");
        argParser.AddArgument("-velStartMin", false, "-10");
        argParser.AddArgument("-velStartMax", false, "10");
        argParser.ParseArguments();

        // Read arguments
        Application.targetFrameRate = argParser.GetIntArgument("-targetFrameRate");
        QualitySettings.vSyncCount  = 0;

        externalAgent    = argParser.arguments["-portAgentSend"].isSupplied && argParser.arguments["-portAgentReceive"].isSupplied;
        portAgentSend    = argParser.arguments["-portAgentSend"].valueInt;
        portAgentReceive = argParser.arguments["-portAgentReceive"].valueInt;
        controlRotation  = argParser.arguments["-controlRotation"].valueInt == 1;
        controlVelocity  = argParser.arguments["-controlVelocity"].valueInt == 1;
        autoRollTarget   = argParser.arguments["-autoRollTarget"].valueInt == 1;
        autoTargetMin    = argParser.arguments["-autoTargetMin"].valueFloat;
        autoTargetMax    = argParser.arguments["-autoTargetMax"].valueFloat;
        rotStartMin      = argParser.arguments["-rotStartMin"].valueFloat;
        rotStartMax      = argParser.arguments["-rotStartMax"].valueFloat;
        angVelStartMin   = argParser.arguments["-angVelStartMin"].valueFloat;
        angVelStartMax   = argParser.arguments["-angVelStartMax"].valueFloat;
        velStartMin      = argParser.arguments["-velStartMin"].valueFloat;
        velStartMax      = argParser.arguments["-velStartMax"].valueFloat;

        // Instantiate agent controller (external or local human controller)
        if (externalAgent)
        {
            agentController = new BoxExternalAgentController(observationDimension, actionDimension, portAgentSend, portAgentReceive);
        }
        else
        {
            agentController = new BoxHumanAgentController(boxInputReader);
        }

        // Initiate environment
        ResetEnvironment();
    }
Beispiel #25
0
    void Awake()
    {
        instance = this;
        Physics.autoSimulation = false;

        analytics = new AircraftAnalytics(airplane, airplane.transform);

        ArgumentParser argParser = new ArgumentParser();

        argParser.AddArgument("-targetFrameRate", false, "50");
        argParser.AddArgument("-portAgentSend", false, "26001");
        argParser.AddArgument("-portAgentReceive", false, "26000");
        argParser.AddArgument("-trees", false, "1");
        argParser.AddArgument("-difficulty", false, "1.0");
        argParser.AddArgument("-actionFrequency", false, "1");
        argParser.AddArgument("-windAngle", false, "0");
        argParser.AddArgument("-windPower", false, "2.5");
        argParser.AddArgument("-windAngleDeviation", false, "25");
        argParser.AddArgument("-penaltyActionCoefficient", false, "0.000");
        argParser.AddArgument("-penaltyTimeCoefficient", false, "0.00000");
        argParser.AddArgument("-limitMode", false, "0");
        argParser.ParseArguments();

        difficulty                   = argParser.arguments["-difficulty"].valueFloat;
        limitMode                    = argParser.arguments["-limitMode"].valueInt;
        actionFrequency              = argParser.arguments["-actionFrequency"].valueInt;
        penaltyActionCoefficient     = argParser.arguments["-penaltyActionCoefficient"].valueFloat;
        penaltyTimeCoefficient       = argParser.arguments["-penaltyTimeCoefficient"].valueFloat;
        FlightWind.windPower         = argParser.arguments["-windPower"].valueFloat;
        FlightWind.windMean          = FlightWind.windPower;
        FlightWind.pitchDeviationMax = argParser.arguments["-windAngleDeviation"].valueFloat;
        FlightWind.yawDeviationMax   = argParser.arguments["-windAngleDeviation"].valueFloat;
        FlightWind.SetWindDirection(argParser.arguments["-windAngle"].valueFloat);
        Application.targetFrameRate = argParser.GetIntArgument("-targetFrameRate");
        QualitySettings.vSyncCount  = 0;

        externalAgent    = argParser.arguments["-portAgentSend"].isSupplied && argParser.arguments["-portAgentReceive"].isSupplied;
        portAgentSend    = argParser.arguments["-portAgentSend"].valueInt;
        portAgentReceive = argParser.arguments["-portAgentReceive"].valueInt;

        if (externalAgent)
        {
            agentController = new BoxExternalAgentController(observationDimension, actionDimension, portAgentSend, portAgentReceive);
        }
        else
        {
            agentController = new FlightHumanAgentController(flightInputReader);
        }

        if (argParser.arguments["-trees"].valueInt == 1)
        {
            treeGenerator.enabled = true;
        }
    }