golang加密货币交易机器人框架插件bbgo的使用

Golang 加密货币交易机器人框架 BBGO 使用指南

概述

BBGO 是一个用 Go 编写的现代加密货币交易机器人框架。

主要功能

  • 交易所抽象接口
  • 流式集成(用户数据 WebSocket,市场数据 WebSocket)
  • 实时订单簿集成
  • TWAP 订单执行支持
  • PnL 计算
  • Slack/Telegram 通知
  • 回测:基于 K 线的回测引擎
  • 内置参数优化工具
  • 多种内置策略
  • 多交易所会话支持
  • 多种技术指标
  • React 驱动的 Web 仪表盘
  • Docker 镜像支持
  • Kubernetes 支持
  • Helm chart 支持
  • 高精度浮点数(最高 16 位)

安装

从二进制安装

# 为 Binance 交易所设置网格交易策略
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-grid.sh) binance

# 为 MAX 交易所设置网格交易策略
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-grid.sh) max

# 为 Binance 交易所设置布林网格交易策略
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-bollgrid.sh) binance

# 为 MAX 交易所设置布林网格交易策略
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-bollgrid.sh) max

从源码构建

参考 从源码构建

配置

创建你的环境变量文件 .env.local

# Binance 交易所
BINANCE_API_KEY=
BINANCE_API_SECRET=

# MAX 交易所
MAX_API_KEY=
MAX_API_SECRET=

# OKEx 交易所
OKEX_API_KEY=
OKEX_API_SECRET=
OKEX_API_PASSPHRASE

# Kucoin 交易所
KUCOIN_API_KEY=
KUCOIN_API_SECRET=
KUCOIN_API_PASSPHRASE=
KUCOIN_API_KEY_VERSION=2

# Bybit 交易所
BYBIT_API_KEY=
BYBIT_API_SECRET=

下载最小配置文件:

curl -o bbgo.yaml https://raw.githubusercontent.com/c9s/bbgo/main/config/minimal.yaml

运行策略

bbgo run

启用 Web 仪表盘:

bbgo run --enable-webserver

示例代码

简单的网格策略配置示例

# config/grid.yaml
---
sessions:
  binance:
    exchange: binance
    envVarPrefix: BINANCE

exchangeStrategies:
- on: binance
  grid:
    symbol: BTCUSDT
    quantity: 0.001
    gridNumber: 100
    upperPrice: 50000.0
    lowerPrice: 30000.0
    profitSpread: 100.0

自定义策略示例

package main

import (
	"github.com/c9s/bbgo/pkg/bbgo"
	"github.com/c9s/bbgo/pkg/types"
)

type MyStrategy struct {
	Symbol string `json:"symbol"`
	Market types.Market
}

func (s *MyStrategy) Run(ctx context.Context, orderExecutor bbgo.OrderExecutor, session *bbgo.ExchangeSession) error {
	// 策略逻辑实现
	session.Subscribe(types.KLineChannel, s.Symbol, types.SubscribeOptions{})
	
	session.MarketDataStream.OnKLine(func(kline types.KLine) {
		// 处理K线数据
		if kline.Closed {
			log.Printf("KLine closed: %+v", kline)
		}
	})
	
	return nil
}

func init() {
	bbgo.RegisterStrategy("myStrategy", &MyStrategy{})
}

内置策略

BBGO


更多关于golang加密货币交易机器人框架插件bbgo的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang加密货币交易机器人框架插件bbgo的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang加密货币交易机器人框架BBGo使用指南

BBGo是一个用Go语言编写的模块化加密货币交易机器人框架,支持多种交易所和交易策略。下面我将介绍BBGo的基本使用方法和示例代码。

1. BBGo核心概念

BBGo的主要特点:

  • 支持多种交易所(Binance, Max, OKEx等)
  • 支持现货和杠杆交易
  • 内置多种技术指标
  • 支持自定义策略
  • 提供Web界面

2. 安装BBGo

# 安装BBGo
go install github.com/c9s/bbgo@latest

# 验证安装
bbgo version

3. 基本配置

创建配置文件bbgo.yaml:

exchange:
  binance:
    apiKey: "your_api_key"
    apiSecret: "your_api_secret"

# 持久化配置
persistence:
  redis:
    host: 127.0.0.1
    port: 6379

4. 简单策略示例

下面是一个简单的均线交叉策略实现:

package main

import (
	"context"
	"log"

	"github.com/c9s/bbgo/pkg/bbgo"
	"github.com/c9s/bbgo/pkg/exchange/binance"
	"github.com/c9s/bbgo/pkg/indicator"
	"github.com/c9s/bbgo/pkg/types"
)

// 定义策略结构体
type SmaCrossStrategy struct {
	// 指标
	FastSMA *indicator.SMA
	SlowSMA *indicator.SMA

	// 配置参数
	Symbol   string `json:"symbol"`
	Interval string `json:"interval"`
	FastPeriod int `json:"fastPeriod"`
	SlowPeriod int `json:"slowPeriod"`
}

// 订阅市场数据
func (s *SmaCrossStrategy) Subscribe(session *bbgo.ExchangeSession) {
	session.Subscribe(types.KLineChannel, s.Symbol, types.SubscribeOptions{Interval: s.Interval})
}

// 运行策略
func (s *SmaCrossStrategy) Run(ctx context.Context, orderExecutor bbgo.OrderExecutor, session *bbgo.ExchangeSession) error {
	// 初始化指标
	s.FastSMA = &indicator.SMA{IntervalWindow: types.IntervalWindow{Interval: s.Interval, Window: s.FastPeriod}}
	s.SlowSMA = &indicator.SMA{IntervalWindow: types.IntervalWindow{Interval: s.Interval, Window: s.SlowPeriod}}

	// 处理K线数据
	session.MarketDataStream.OnKLineClosed(func(kline types.KLine) {
		if kline.Symbol != s.Symbol || kline.Interval != s.Interval {
			return
		}

		// 更新指标
		s.FastSMA.Update(kline.Close)
		s.SlowSMA.Update(kline.Close)

		// 检查交叉
		crossOver := bbgo.CrossOver(s.FastSMA.Values, s.SlowSMA.Values)
		crossUnder := bbgo.CrossUnder(s.FastSMA.Values, s.SlowSMA.Values)

		// 获取当前持仓
		position := orderExecutor.Position()

		if crossOver && position.IsDust() {
			// 金叉且无持仓时买入
			_, err := orderExecutor.SubmitOrder(ctx, types.SubmitOrder{
				Symbol:   s.Symbol,
				Side:     types.SideTypeBuy,
				Type:     types.OrderTypeMarket,
				Quantity: 0.01, // 买入数量
			})
			if err != nil {
				log.Printf("买入失败: %v", err)
			}
		} else if crossUnder && position.GetBase().Sign() > 0 {
			// 死叉且有持仓时卖出
			_, err := orderExecutor.SubmitOrder(ctx, types.SubmitOrder{
				Symbol: s.Symbol,
				Side:   types.SideTypeSell,
				Type:   types.OrderTypeMarket,
				Quantity: position.GetBase().Abs(), // 卖出全部持仓
			})
			if err != nil {
				log.Printf("卖出失败: %v", err)
			}
		}
	})

	return nil
}

func main() {
	// 创建BBGo环境
	environ := bbgo.NewEnvironment()
	
	// 添加交易所
	binanceExchange := binance.New("binance")
	environ.AddExchange("binance", binanceExchange)

	// 创建策略实例
	strategy := &SmaCrossStrategy{
		Symbol:     "BTCUSDT",
		Interval:   "1h",
		FastPeriod: 5,
		SlowPeriod: 20,
	}

	// 注册策略
	bbgo.RegisterStrategy("sma_cross", strategy)

	// 启动交易机器人
	ctx := context.Background()
	if err := bbgo.Run(ctx, environ); err != nil {
		log.Fatal(err)
	}
}

5. 高级功能

5.1 使用Web界面

BBGo内置Web界面,可以通过以下配置启用:

server:
  bind: 0.0.0.0
  port: 8080
  baseURL: /

5.2 使用通知

// 在策略中添加通知
session.Notifier.Notify("策略信号: 买入 %s", s.Symbol)

5.3 回测支持

BBGo支持回测功能:

bbgo backtest --config bbgo.yaml --exchange binance --symbol BTCUSDT --from 20230101 --to 20230201

6. 部署建议

  1. 使用Docker部署:
docker run -v $(pwd)/config:/config -p 8080:8080 ghcr.io/c9s/bbgo:latest
  1. 使用systemd管理服务:
[Unit]
Description=BBGo Trading Bot
After=network.target

[Service]
ExecStart=/usr/local/bin/bbgo run --config /path/to/bbgo.yaml
Restart=always
User=bbgo

[Install]
WantedBy=multi-user.target

7. 注意事项

  1. 生产环境使用前务必充分测试
  2. 注意API密钥安全
  3. 监控机器人运行状态
  4. 设置合理的风险控制参数

BBGo提供了丰富的功能和灵活的扩展性,适合构建各种复杂的交易策略。更多高级用法可以参考官方文档和示例代码。

回到顶部