Skip to content

除了使用banbot的内置终端命令,您也可以注册并执行自己的终端命令。

注册常规函数

您可通过entry.AddCmdJob方法注册终端命令函数:

go
entry.AddCmdJob(&entry.CmdJob{
    Name:    "hello",
    Parent:  "",
	Run: func(args *config.CmdArgs) *errs.Error {
        fmt.Println("hello")
        return nil
    },
    Options: []string{},
    Help:    "show hello",
})

然后您可以通过bot hello触发执行showHello函数。此函数将接受一个*config.CmdArgs参数,存储解析后的命令行参数,如果您需要访问相关参数,请在Options中填写需要访问的字段名。 所有可用的字段名可参考entry/main中的bindSubFlags函数。

注册任意参数的函数

固定的Options*config.CmdArgs可能难以满足您的个性化需求。 您也可以使用RunRaw替换Run,然后自行解析命令行参数:

go
entry.AddCmdJob(&entry.CmdJob{
    Name:   "hello",
    Parent: "",
    RunRaw: func(args []string) error {
        fmt.Println(strings.Join(args, " "))
        return nil
    },
    Help:    "show hello",
})

读取数据生成K线图示例

您可以通过上面自定义终端命令,自由调用banbot提供的相关接口,实现各种各样的复杂任务,而不仅仅是内置的回测、交易等。

比如,您可以读取指定品种的K线,然后生成静态html的K线图:参考代码