V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
anyongjin
V2EX  ›  程序员

我用 Go 写了一个高性能量化交易机器人,开源了

  •  
  •   anyongjin ·
    anyongjin · 5 小时 40 分钟前 · 497 次点击

    作为常年混迹加密货币量化圈的牛马,踩过无数坑后终于打磨出 banbot 这个量化框架。今天给大家分享下这把好用的锤子!

    为什么要重复造轮子?

    市面上确实已经有不少量化交易框架,但在实际使用中我遇到了这些问题:

    1. 性能问题:很多框架在回测时速度很慢,特别是在处理 1 分钟级别的数据时。
    2. 策略实现繁琐:需要写很多模板代码,而且策略代码在回测和实盘时还需要修改。
    3. 超参数优化容易过拟合:很多框架缺乏有效的防过拟合机制。
    4. 实盘部署复杂:需要配置很多环境依赖,而且不同策略要开多个进程。

    banbot 的主要特点

    经过反复打磨,banbot 现在具备以下特点:

    1. 超高性能:得益于 Go 语言和优化的指标库,1 秒钟就能回测 1 年的数据(基于 5 分钟 K 线测试)。
    2. 一份代码多处运行:同一个策略代码,无需修改即可用于回测、模拟交易和实盘。再也不用担心回测和实盘表现不一致了。
    3. 事件驱动架构:完全基于事件驱动设计,杜绝未来函数,让策略逻辑更自由,回测结果更可靠。
    4. 内置防过拟合机制:提供了滚动优化回测功能,可以更真实地模拟策略在未来的表现。比如用最近 3 年数据,每次用 1 年数据优化参数,然后用优化后的参数对后 2 个月进行回测,如此滚动,最终得到不含未来信息的回测报告。
    5. 规模化部署:一个 2 核 2G 的小服务器就能同时运行数百个账户的策略。而且所有策略打包成单个可执行文件,部署超级方便。
    6. 完善的 WebUI:提供了美观的 Web 界面,可以在线编辑策略、执行回测、分析交易表现等。
    7. 支持 AI 和机器学习:支持通过 grpc 和 python 交互,可供模型训练和调用 AI 模型推理。

    技术实现上的一些思考

    1. 为什么选择 Go ?
      量化交易最常用的语言是 Python ,但在追求性能的同时又要保持开发效率,Go 是很好的选择。而且 Go 的交叉编译特性让部署变得极其简单。
    2. 数据存储方案
      采用了 TimeScaleDB 时序数据库存储 K 线数据,在存储空间和查询性能上取得了很好的平衡。只存储 1m 、5m 、15m 、1h 、1d 这些基础周期,其他周期都通过动态聚合生成。
    3. 回测性能优化
      通过支持状态缓存的指标库设计,大大提升了回测速度。同时采用事件驱动架构,让回测更接近实盘表现。

    示例量化策略

    [ github 策略仓库]

    banbot 提供了包括趋势、网格等社区公开策略,您可从上面示例策略仓库中查看并测试。(请勿直接用于实盘)

    使用建议

    1. 在实盘之前,一定要进行充分的回测和滚动优化测试。
    2. 建议先用小资金测试策略,确认策略表现符合预期后再加大资金量。
    3. 实盘时建议配置微信通知,及时了解策略运行状态。

    未来规划

    • 支持更多交易所(目前仅支持币安)
    • 添加更多经典策略
    • 支持更多社交 app 通知和控制

    项目完全开源,欢迎大家使用和贡献代码。如果对项目感兴趣,可以到 GitHub 查看更多细节。

    [官方文档]

    [ github 仓库]

    PS:我只分享锤子,请别问我的圣杯雕刻的咋样,圣杯还得看各位大佬

    更多深度交流从文档中扫码加微信进群

    ziyeziye
        1
    ziyeziye  
       5 小时 35 分钟前
    666, star 了,学习一下
    Rabbit233
        2
    Rabbit233  
       4 小时 2 分钟前
    太 6 啦,直接一手 start ,支持支持~
    qloog
        3
    qloog  
       58 分钟前
    厉害,已 star, 另外 关于子命令和帮助可以使用 github.com/spf13/cobra 可以极大的优化代码结构
    gy0624ww
        4
    gy0624ww  
       15 分钟前
    大佬 真厉害
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3324 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 12:10 · PVG 20:10 · LAX 04:10 · JFK 07:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.