package ent import ( "flag" "github.com/banbox/banbot/biz" "github.com/banbox/banbot/config" "github.com/banbox/banbot/entry" "github.com/banbox/banexg/errs" "github.com/banbox/banexg/log" "github.com/banbox/banstagy/arb" "github.com/spf13/cobra" "os" ) func init() { entry.AddCommand("tool", &cobra.Command{ Use: "hisSharpe", DisableFlagParsing: true, RunE: func(_ *cobra.Command, args []string) error { return hisSharpe(args) }, }) } func RunMyEntry(args []string) *errs.Error { if len(args) == 0 { log.Warn("sub command is require for `my`") return nil } var ag = &config.CmdArgs{} var f = flag.NewFlagSet("web", flag.ExitOnError) f.StringVar(&ag.LogLevel, "level", "info", "log level") f.StringVar(&ag.TimeZone, "tz", "", "timezone") f.StringVar(&ag.DataDir, "datadir", "", "Path to data dir.") f.StringVar(&ag.ConfigData, "config-data", "", "yaml config string") f.Var(&ag.Configs, "config", "config path to use, Multiple -config options may be used") if args == nil { args = os.Args } err_ := f.Parse(args[1:]) if err_ != nil { return errs.New(errs.CodeRunTime, err_) } err := biz.SetupComsExg(&config.CmdArgs{ LogLevel: ag.LogLevel, DataDir: ag.DataDir, TimeZone: ag.TimeZone, Configs: ag.Configs, ConfigData: ag.ConfigData, }) if err != nil { return err } switch args[0] { case "fundRate": err = runFundEnter() case "moneyFlow": err = maxVolTest() case "maxChg": err = maxChgTest() case "twoPairRatio": err = arb.GenTwoPairRatio() case "profTuple": err = arb.ProfTuples() case "tupleSpike": err = arb.FindTupleSpikes() case "statGroup": err = arb.StatGroupPairs() case "balance": err = showBalance() default: log.Warn("unknown sub command for `my`") } return err }