The modern cryptocurrency trading bot framework written in Go.
Go to file
2020-10-10 18:01:37 +08:00
accounting chore: make code more readable 2020-10-09 16:00:46 +08:00
bbgo rename stock distribution 2020-10-10 12:24:50 +08:00
cmd fix max trades query for pnl calulcation 2020-10-10 17:50:49 +08:00
config add bbgo yaml config file 2020-10-10 12:23:05 +08:00
examples examples/max-eqmaker: fix arg type 2020-10-10 12:31:27 +08:00
exchange convert currency name 2020-10-10 17:58:22 +08:00
fixedpoint move packages 2020-10-05 17:47:25 +08:00
migrations add migration files 2020-10-05 17:51:01 +08:00
notifier/slacknotifier move packages 2020-10-05 17:47:25 +08:00
service pull out exchange batch processor 2020-10-10 12:02:06 +08:00
sigchan refactor: run gofmt -w -s 2020-10-09 13:21:42 +08:00
slack chore: make code more readable 2020-10-09 16:00:46 +08:00
types fix max trades query for pnl calulcation 2020-10-10 17:50:49 +08:00
util refactor: run gofmt -w -s 2020-10-09 13:21:42 +08:00
.gitignore ignore .idea 2020-10-10 11:26:49 +08:00
.travis.yml .travis.yml: fix script 2020-10-10 12:29:12 +08:00
go.mod add bbgo yaml config file 2020-10-10 12:23:05 +08:00
go.sum clean up 2020-10-07 13:36:11 +08:00
LICENSE Create LICENSE 2020-10-08 22:20:59 +08:00
README.md doc: add migration description 2020-10-10 18:01:37 +08:00

bbgo

A trading bot framework written in Go. The name bbgo comes from the BB8 bot in the Star Wars movie. aka Buy BitCoin Go!

Current Status

Working hard in progress

Build Status

Aim to release v1.0 before 11/14

Features

  • Exchange abstraction interface
  • Stream integration (user data websocket)
  • PnL calculation.

Supported Exchanges

  • MAX Exchange (located in Taiwan)
  • Binance Exchange

Installation

Install the builtin commands:

go get -u github.com/c9s/bbgo/cmd/bbgo

You will need goose to run these migration files: migrations

Examples

Please check out the example directory: examples

Initialize MAX API:

key := os.Getenv("MAX_API_KEY")
secret := os.Getenv("MAX_API_SECRET")

maxRest := maxapi.NewRestClient(maxapi.ProductionAPIURL)
maxRest.Auth(key, secret)

Creating user data stream to get the orderbook (depth):

stream := max.NewStream(key, secret)
stream.Subscribe(types.BookChannel, symbol, types.SubscribeOptions{})

streambook := types.NewStreamBook(symbol)
streambook.BindStream(stream)

New Trading Bot API design

still under construction

package main

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

mysqlURL := viper.GetString("mysql-url")
mysqlURL = fmt.Sprintf("%s?parseTime=true", mysqlURL)
db, err := sqlx.Connect("mysql", mysqlURL)

if err != nil {
    return err
}

t := bbgo.New(bbgo.Config{
    DB: db,
})
t.AddNotifier(slacknotifier.New(slackToken))
t.AddLogHook(slacklog.NewLogHook(slackToken))

t.AddExchange("binance", binance.New(viper.Getenv("binance-api-key"), viper.Getenv("binance-api-secret")))).
    Subscribe("binance", "btcusdt", "kline@5m", "book", "trade").
    AddStrategy(bondtrade.New, bondtrade.New).
    Symbols("btcusdt", "bnbusdt")

t.AddExchange("max", max.New(viper.Getenv("max-key"), viper.Getenv("max-secret")))).
    Subscribe("max", "btctwd", "kline@5m", "book", "trade").
    AddStrategy(flashdrop.New, bondtrade.New)

t.AddCrossExchangeStrategy(hedgemaker.New(...))

Support

You may register your exchange account with my referral ID to support this project.

Or support this project by cryptocurrency:

  • BTC omni 3J6XQJNWT56amqz9Hz2BEVQ7W4aNmb5kiU
  • USDT erc20 0x63E5805e027548A384c57E20141f6778591Bac6F

License

MIT License