Skip to content

Commit

Permalink
Merge pull request c9s#487 from zenixls2/update/release_script_dnum
Browse files Browse the repository at this point in the history
update: readme for dnum. fix: script for curl downloading
  • Loading branch information
c9s authored Apr 1, 2022
2 parents 5901b4a + e5c3dff commit 2891756
Show file tree
Hide file tree
Showing 11 changed files with 470 additions and 14 deletions.
22 changes: 19 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ A trading bot framework written in Go. The name bbgo comes from the BB8 bot in t
- Docker image ready.
- Kubernetes support.
- Helm chart ready.
- High precision float point (up to 16 digits, run with `-tags dnum`).

## Screenshots

Expand Down Expand Up @@ -62,23 +63,38 @@ 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>
- Kucoin: <https://www.kucoin.com/ucenter/signup?rcode=r3KX2D4>

Since the exchange implementation and support are done by a small team, if you like the work they've done for you, It
would be great if you can use their referral code as your support to them. :-D
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

### Install from binary

The following script will help you set up a config file, dotenv file:
The following script will help you set up a config file and a dotenv file:

```sh
# grid trading strategy for binance exchange
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-grid.sh) binance

# grid trading strategy for max exchange
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-grid.sh) max

# bollinger grid trading strategy for binance exchange
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-bollgrid.sh) binance

# bollinger grid trading strategy for max exchange
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-bollgrid.sh) max
```

If you already have configuration somewhere, a download-only script might be suitable for you:
```sh
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/download.sh)
```

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.
To download & setup, please refer to [Dnum Installation](doc/topics/dnum-binary.md)

### One-click Linode StackScript:

- BBGO Grid Trading on Binance <https://cloud.linode.com/stackscripts/950715>
Expand Down
1 change: 1 addition & 0 deletions doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* [Build From Source](build-from-source.md) - How to build bbgo
* [Back-testing](topics/back-testing.md) - How to back-test strategies
* [TWAP](topics/twap.md) - TWAP order execution to buy/sell large quantity of order
* [Dnum Installation](topics/dnum-binary.md) - installation of high-precision version of bbgo

### Configuration
* [Setting up Slack Notification](configuration/slack.md)
Expand Down
26 changes: 26 additions & 0 deletions doc/topics/dnum-binary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
## Dnum: High Precision Numeric Implementation
----------------------------------------------
The `dnum` version of `fixedpoint` supports up to 16 digits of decimal precision. It's two times slower than the legacy version, which only supports up to 8 digits of decimal precision. We recommend that strategy developers do algorithmic calculations in `float64`, then convert them back to `fixedpoint` to interact with exchanges to keep the balance between speed and the accuracy of accounting result.

To Install dnum version of bbgo, we've create several scripts for quick setup:

```sh
# grid trading strategy for binance exchange
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-grid-dnum.sh) binance

# grid trading strategy for max exchange
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-grid-dnum.sh) max

# bollinger grid trading strategy for binance exchange
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-bollgrid-dnum.sh) binance

# bollinger grid trading strategy for max exchange
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/setup-bollgrid-dnum.sh) max
```

If you already have the configuration somewhere, you may want to use the download-only script:
```sh
bash <(curl -s https://raw.githubusercontent.com/c9s/bbgo/main/scripts/download-dnum.sh)
```

The precompiled dnum binaries are also available in the [Release Page](https://github.com/c9s/bbgo/releases).
40 changes: 40 additions & 0 deletions scripts/download-dnum.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash
set -e
version=$(curl -fs https://api.github.com/repos/c9s/bbgo/releases/latest | awk -F '"' '/tag_name/{print $4}')
osf=$(uname | tr '[:upper:]' '[:lower:]')
arch=""
case $(uname -m) in
x86_64 | ia64) arch="amd64";;
arm64 | aarch64 | arm) arch="arm64";;
*)
echo "unsupported architecture: $(uname -m)"
exit 1;;
esac
dist_file=bbgo-dnum-$version-$osf-$arch.tar.gz

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

function warn()
{
echo -e "${YELLOW}$@${NC}"
}

function error()
{
echo -e "${RED}$@${NC}"
}

function info()
{
echo -e "${GREEN}$@${NC}"
}

info "downloading..."
curl -O -L https://github.com/c9s/bbgo/releases/download/$version/$dist_file
tar xzf $dist_file
mv bbgo-dnum-$osf-$arch bbgo
chmod +x bbgo
info "downloaded successfully"
14 changes: 11 additions & 3 deletions scripts/download.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
#!/bin/bash
set -e
version=$(curl -fs https://api.github.com/repos/c9s/bbgo/releases/latest | awk -F '"' '/tag_name/{print $4}')
arch=""
case $(uname -m) in
x86_64 | ia64) arch="amd64";;
arm64 | aarch64 | arm) arch="arm64";;
*)
echo "unsupported architecture: $(uname -m)"
exit 1;;
esac
osf=$(uname | tr '[:upper:]' '[:lower:]')
version=v1.15.2
dist_file=bbgo-$version-$osf-amd64.tar.gz
dist_file=bbgo-$version-$osf-$arch.tar.gz

RED='\033[0;31m'
GREEN='\033[0;32m'
Expand All @@ -27,6 +35,6 @@ function info()
info "downloading..."
curl -O -L https://github.com/c9s/bbgo/releases/download/$version/$dist_file
tar xzf $dist_file
mv bbgo-$osf bbgo
mv bbgo-$osf-$arch bbgo
chmod +x bbgo
info "downloaded successfully"
109 changes: 109 additions & 0 deletions scripts/setup-bollgrid-dnum.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
#!/bin/bash
set -e

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

function warn()
{
echo -e "${YELLOW}$@${NC}"
}

function error()
{
echo -e "${RED}$@${NC}"
}

function info()
{
echo -e "${GREEN}$@${NC}"
}
version=$(curl -fs https://api.github.com/repos/c9s/bbgo/releases/latest | awk -F '"' '/tag_name/{print $4}')
osf=$(uname | tr '[:upper:]' '[:lower:]')
arch=""
case $(uname -m) in
x86_64 | ia64) arch="amd64";;
arm64 | aarch64 | arm) arch="arm64";;
*)
echo "unsupported architecture: $(uname -m)"
exit 1;;
esac
dist_file=bbgo-dnum-$version-$osf-$arch.tar.gz

info "downloading..."
curl -O -L https://github.com/c9s/bbgo/releases/download/$version/$dist_file
tar xzf $dist_file
mv bbgo-dnum-$osf-$arch bbgo
chmod +x bbgo
info "downloaded successfully"

function gen_dotenv()
{
read -p "Enter your MAX API key: " api_key
read -p "Enter your MAX API secret: " api_secret
echo "Generating your .env.local file..."
cat <<END > .env.local
MAX_API_KEY=$api_key
MAX_API_SECRET=$api_secret
END

}

if [[ -e ".env.local" ]] ; then
echo "Found existing .env.local, you will overwrite the existing .env.local file!"
read -p "Are you sure? (Y/n) " a
if [[ $a != "n" ]] ; then
gen_dotenv
fi
else
gen_dotenv
fi

if [[ -e "bbgo.yaml" ]] ; then
echo "Found existing bbgo.yaml, you will overwrite the existing bbgo.yaml file!"
read -p "Are you sure? (Y/n) " a
if [[ $a == "n" ]] ; then
exit
fi
fi

cat <<END > bbgo.yaml
---
exchangeStrategies:
- on: max
bollgrid:
symbol: BTCUSDT
interval: 1h
gridNumber: 20
quantity: 0.001
profitSpread: 100.0
END

info "config file is generated successfully"
echo "================================================================"
echo "now you can edit your strategy config file bbgo.yaml to run bbgo"

if [[ $osf == "darwin" ]] ; then
echo "we found you're using MacOS, you can type:"
echo ""
echo " open -a TextEdit bbgo.yaml"
echo ""
else
echo "you look like a pro user, you can edit the config by:"
echo ""
echo " vim bbgo.yaml"
echo ""
fi

echo "To run bbgo just type: "
echo ""
echo " ./bbgo run"
echo ""
echo "To stop bbgo, just hit CTRL-C"

if [[ $osf == "darwin" ]] ; then
open -a TextEdit bbgo.yaml
fi
12 changes: 9 additions & 3 deletions scripts/setup-bollgrid.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,16 @@ function info()
{
echo -e "${GREEN}$@${NC}"
}

version=$(curl -fs https://api.github.com/repos/c9s/bbgo/releases/latest | awk -F '"' '/tag_name/{print $4}')
osf=$(uname | tr '[:upper:]' '[:lower:]')
arch=amd64
version=v1.21.4
arch=""
case $(uname -m) in
x86_64 | ia64) arch="amd64";;
arm64 | aarch64 | arm) arch="arm64";;
*)
echo "unsupported architecture: $(uname -m)"
exit 1;;
esac
dist_file=bbgo-$version-$osf-$arch.tar.gz

info "downloading..."
Expand Down
114 changes: 114 additions & 0 deletions scripts/setup-dnum.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
#!/bin/bash
set -e
version=$(curl -fs https://api.github.com/repos/c9s/bbgo/releases/latest | awk -F '"' '/tag_name/{print $4}')
osf=$(uname | tr '[:upper:]' '[:lower:]')
arch=""
case $(uname -m) in
x86_64 | ia64) arch="amd64";;
arm64 | aarch64 | arm) arch="arm64";;
*)
echo "unsupported architecture: $(uname -m)"
exit 1;;
esac
dist_file=bbgo-dnum-$version-$osf-$arch.tar.gz

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

function warn()
{
echo -e "${YELLOW}$@${NC}"
}

function error()
{
echo -e "${RED}$@${NC}"
}

function info()
{
echo -e "${GREEN}$@${NC}"
}

info "downloading..."
curl -O -L https://github.com/c9s/bbgo/releases/download/$version/$dist_file
tar xzf $dist_file
mv bbgo-dnum-$osf-$arch bbgo
chmod +x bbgo
info "downloaded successfully"

if [[ -e "bbgo.yaml" ]] ; then
echo "Found existing bbgo.yaml, you will overwrite the existing bbgo.yaml file!"
read -p "Are you sure? (Y/n) " a
if [[ $a == "n" ]] ; then
exit
fi
fi

cat <<END > bbgo.yaml
---
riskControls:
sessionBased:
max:
orderExecutor:
bySymbol:
BTCUSDT:
# basic risk control order executor
basic:
minQuoteBalance: 100.0
maxBaseAssetBalance: 3.0
minBaseAssetBalance: 0.0
maxOrderAmount: 1000.0
exchangeStrategies:
- on: max
grid:
symbol: BTCUSDT
quantity: 0.002
gridNumber: 100
profitSpread: 50.0
upperPrice: 14000.0
lowerPrice: 11000.0
END

echo "Config file is generated"

if [[ -e ".env.local" ]] ; then
echo "Found existing .env.local, you will overwrite the existing .env.local file!"
read -p "Are you sure? (Y/n) " a
if [[ $a == "n" ]] ; then
exit
fi
fi

read -p "Enter your MAX API key: " api_key

read -p "Enter your MAX API secret: " api_secret

echo "Generating your .env.local file..."
cat <<END > .env.local
export MAX_API_KEY=$api_key
export MAX_API_SECRET=$api_secret
END

echo "Now you can edit your strategy config file bbgo.yaml to run bbgo"

if [[ $osf == "darwin" ]] ; then
echo "We found you're using MacOS, you can type:"
echo ""
echo " open -a TextEdit bbgo.yaml"
echo ""
fi

echo "To run bbgo just type: "
echo ""
echo " source .env.local && ./bbgo run --config bbgo.yaml"
echo ""
echo "To stop bbgo, just hit CTRL-C"

if [[ $osf == "darwin" ]] ; then
open -a TextEdit bbgo.yaml
fi

Loading

0 comments on commit 2891756

Please sign in to comment.