mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-25 16:25:16 +00:00
update doc
This commit is contained in:
parent
9fbe2e859e
commit
69179ab66f
98
README.md
98
README.md
|
@ -30,7 +30,8 @@ You can use BBGO's trading unit and back-test unit to implement your own strateg
|
||||||
|
|
||||||
### Trading Unit Developers 🧑💻
|
### Trading Unit Developers 🧑💻
|
||||||
|
|
||||||
You can use BBGO's underlying common exchange API, currently it supports 4+ major exchanges, so you don't have to repeat the implementation.
|
You can use BBGO's underlying common exchange API, currently it supports 4+ major exchanges, so you don't have to repeat
|
||||||
|
the implementation.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
@ -44,7 +45,8 @@ You can use BBGO's underlying common exchange API, currently it supports 4+ majo
|
||||||
- Built-in parameter optimization tool.
|
- Built-in parameter optimization tool.
|
||||||
- Built-in Grid strategy and many other built-in strategies.
|
- Built-in Grid strategy and many other built-in strategies.
|
||||||
- Multi-exchange session support: you can connect to more than 2 exchanges with different accounts or subaccounts.
|
- Multi-exchange session support: you can connect to more than 2 exchanges with different accounts or subaccounts.
|
||||||
- Indicators with interface similar to `pandas.Series`([series](https://github.com/c9s/bbgo/blob/main/doc/development/series.md))([usage](https://github.com/c9s/bbgo/blob/main/doc/development/indicator.md)):
|
- Indicators with interface similar
|
||||||
|
to `pandas.Series`([series](https://github.com/c9s/bbgo/blob/main/doc/development/series.md))([usage](https://github.com/c9s/bbgo/blob/main/doc/development/indicator.md)):
|
||||||
- [Accumulation/Distribution Indicator](./pkg/indicator/ad.go)
|
- [Accumulation/Distribution Indicator](./pkg/indicator/ad.go)
|
||||||
- [Arnaud Legoux Moving Average](./pkg/indicator/alma.go)
|
- [Arnaud Legoux Moving Average](./pkg/indicator/alma.go)
|
||||||
- [Average True Range](./pkg/indicator/atr.go)
|
- [Average True Range](./pkg/indicator/atr.go)
|
||||||
|
@ -115,7 +117,8 @@ Get your exchange API key and secret after you register the accounts (you can ch
|
||||||
- OKEx: <https://www.okex.com/join/2412712?src=from:ios-share>
|
- OKEx: <https://www.okex.com/join/2412712?src=from:ios-share>
|
||||||
- Kucoin: <https://www.kucoin.com/ucenter/signup?rcode=r3KX2D4>
|
- Kucoin: <https://www.kucoin.com/ucenter/signup?rcode=r3KX2D4>
|
||||||
|
|
||||||
This project is maintained and supported by a small group of team. If you would like to support this project, please register on the exchanges using the provided links with referral codes above.
|
This project is maintained and supported by a small group of team. If you would like to support this project, please
|
||||||
|
register on the exchanges using the provided links with referral codes above.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
@ -145,8 +148,8 @@ bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/download.
|
||||||
|
|
||||||
Or refer to the [Release Page](https://github.com/c9s/bbgo/releases) and download manually.
|
Or refer to the [Release Page](https://github.com/c9s/bbgo/releases) and download manually.
|
||||||
|
|
||||||
Since v2, we've added new float point implementation from dnum to support decimals with higher precision.
|
Since v2, we've added new float point implementation from dnum to support decimals with higher precision. To download &
|
||||||
To download & setup, please refer to [Dnum Installation](doc/topics/dnum-binary.md)
|
setup, please refer to [Dnum Installation](doc/topics/dnum-binary.md)
|
||||||
|
|
||||||
### One-click Linode StackScript
|
### One-click Linode StackScript
|
||||||
|
|
||||||
|
@ -241,8 +244,8 @@ bbgo pnl --exchange binance --asset BTC --since "2019-01-01"
|
||||||
|
|
||||||
### Testnet (Paper Trading)
|
### Testnet (Paper Trading)
|
||||||
|
|
||||||
Currently only supports binance testnet.
|
Currently only supports binance testnet. To run bbgo in testnet, apply new API keys
|
||||||
To run bbgo in testnet, apply new API keys from [Binance Test Network](https://testnet.binance.vision), and set the following env before you start bbgo:
|
from [Binance Test Network](https://testnet.binance.vision), and set the following env before you start bbgo:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export PAPER_TRADE=1
|
export PAPER_TRADE=1
|
||||||
|
@ -344,7 +347,8 @@ Check out the strategy directory [strategy](pkg/strategy) for all built-in strat
|
||||||
indicator [bollgrid](pkg/strategy/bollgrid)
|
indicator [bollgrid](pkg/strategy/bollgrid)
|
||||||
- `grid` strategy implements the fixed price band grid strategy [grid](pkg/strategy/grid). See
|
- `grid` strategy implements the fixed price band grid strategy [grid](pkg/strategy/grid). See
|
||||||
[document](./doc/strategy/grid.md).
|
[document](./doc/strategy/grid.md).
|
||||||
- `supertrend` strategy uses Supertrend indicator as trend, and DEMA indicator as noise filter [supertrend](pkg/strategy/supertrend). See
|
- `supertrend` strategy uses Supertrend indicator as trend, and DEMA indicator as noise
|
||||||
|
filter [supertrend](pkg/strategy/supertrend). See
|
||||||
[document](./doc/strategy/supertrend.md).
|
[document](./doc/strategy/supertrend.md).
|
||||||
- `support` strategy uses K-lines with high volume as support [support](pkg/strategy/support). See
|
- `support` strategy uses K-lines with high volume as support [support](pkg/strategy/support). See
|
||||||
[document](./doc/strategy/support.md).
|
[document](./doc/strategy/support.md).
|
||||||
|
@ -365,78 +369,9 @@ bbgo run --config config/buyandhold.yaml
|
||||||
|
|
||||||
See [Back-testing](./doc/topics/back-testing.md)
|
See [Back-testing](./doc/topics/back-testing.md)
|
||||||
|
|
||||||
## Adding New Built-in Strategy
|
## Adding Strategy
|
||||||
|
|
||||||
Fork and clone this repository, Create a directory under `pkg/strategy/newstrategy`, write your strategy
|
See [Developing Strategy](./doc/topics/developing-strategy.md)
|
||||||
at `pkg/strategy/newstrategy/strategy.go`.
|
|
||||||
|
|
||||||
Define a strategy struct:
|
|
||||||
|
|
||||||
```go
|
|
||||||
package newstrategy
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/c9s/bbgo/pkg/fixedpoint"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Strategy struct {
|
|
||||||
Symbol string `json:"symbol"`
|
|
||||||
Param1 int `json:"param1"`
|
|
||||||
Param2 int `json:"param2"`
|
|
||||||
Param3 fixedpoint.Value `json:"param3"`
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Register your strategy:
|
|
||||||
|
|
||||||
```go
|
|
||||||
package newstrategy
|
|
||||||
|
|
||||||
const ID = "newstrategy"
|
|
||||||
|
|
||||||
const stateKey = "state-v1"
|
|
||||||
|
|
||||||
var log = logrus.WithField("strategy", ID)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
bbgo.RegisterStrategy(ID, &Strategy{})
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Implement the strategy methods:
|
|
||||||
|
|
||||||
```go
|
|
||||||
package newstrategy
|
|
||||||
|
|
||||||
func (s *Strategy) Subscribe(session *bbgo.ExchangeSession) {
|
|
||||||
session.Subscribe(types.KLineChannel, s.Symbol, types.SubscribeOptions{Interval: "2m"})
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Strategy) Run(ctx context.Context, orderExecutor bbgo.OrderExecutor, session *bbgo.ExchangeSession) error {
|
|
||||||
// ....
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Edit `pkg/cmd/builtin.go`, and import the package, like this:
|
|
||||||
|
|
||||||
```go
|
|
||||||
package cmd
|
|
||||||
|
|
||||||
// import built-in strategies
|
|
||||||
import (
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/bollgrid"
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/buyandhold"
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/flashcrash"
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/grid"
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/pricealert"
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/support"
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/swing"
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/trailingstop"
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/xmaker"
|
|
||||||
_ "github.com/c9s/bbgo/pkg/strategy/xpuremaker"
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Write your own private strategy
|
## Write your own private strategy
|
||||||
|
|
||||||
|
@ -635,8 +570,9 @@ What's Position?
|
||||||
|
|
||||||
## Looking For A New Strategy?
|
## Looking For A New Strategy?
|
||||||
|
|
||||||
You can write an article about BBGO in any topic, in 750-1500 words for exchange, and I can implement the strategy for you (depends on the complexity and efforts).
|
You can write an article about BBGO in any topic, in 750-1500 words for exchange, and I can implement the strategy for
|
||||||
If you're interested in, DM me in telegram <https://t.me/c123456789s> or twitter <https://twitter.com/c9s>, we can discuss.
|
you (depends on the complexity and efforts). If you're interested in, DM me in telegram <https://t.me/c123456789s> or
|
||||||
|
twitter <https://twitter.com/c9s>, we can discuss.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|
|
@ -10,11 +10,11 @@ For built-in strategies, they are placed in `pkg/strategy` of the BBGO source re
|
||||||
For external strategies, you can create a private repository as an isolated go package and place your strategy inside
|
For external strategies, you can create a private repository as an isolated go package and place your strategy inside
|
||||||
it.
|
it.
|
||||||
|
|
||||||
In general, strategies are Go struct, placed in Go package.
|
In general, strategies are Go struct, defined in the Go package.
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
To add your first strategy, the fastest way is to add the built-in strategy.
|
To add your first strategy, the fastest way is to add it as a built-in strategy.
|
||||||
|
|
||||||
Simply edit `pkg/cmd/builtin.go` and import your strategy package there.
|
Simply edit `pkg/cmd/builtin.go` and import your strategy package there.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user