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",
})

内置工具命令

banbot提供了一些内置的工具命令,用于数据验证、分析和管理:

K线数据一致性检查

检查实盘dump的K线数据正确性:

bash
# 检查K线数据一致性
bot tool test_live_bars /path/to/dump/file.gob

输入的gob文件是执行实盘bot trade -out @file.gob时附加-out参数生成的。

执行此命令会将实盘dump的K线与本地数据库中的K线进行对比,检查实盘K线正确且无遗漏。

输出示例:

BTCUSDT_1m 2025-01-01 00:00:00 - 2025-01-01 23:59:00, live: [5, 10], local: [3, 8]
ETHUSDT_1m 2025-01-01 00:00:00 - 2025-01-01 23:59:00, live: [], local: [15]
total: 2880, pairs: 2

回测报告生成

从订单gob文件输出回测报告:

bash
# 从订单文件生成回测报告
bot tool bt_result /path/to/orders.gob

功能特性:

  • 支持从历史订单数据重新生成报告
  • 可用于离线分析和报告生成
  • 支持多种输出格式

读取数据生成K线图示例

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

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