stable/setup.sh

283 lines
7.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
#encoding=utf8
2018-08-12 08:37:10 +00:00
# Check which python version is installed
function check_installed_python() {
which python3.7
if [ $? -eq 0 ]; then
echo "using Python 3.7"
PYTHON=python3.7
return
fi
which python3.6
if [ $? -eq 0 ]; then
echo "using Python 3.6"
PYTHON=python3.6
return
fi
2019-01-05 18:50:46 +00:00
if [ -z ${PYTHON} ]; then
echo "No usable python found. Please make sure to have python3.6 or python3.7 installed"
exit 1
fi
2018-08-12 08:37:10 +00:00
}
function updateenv() {
echo "-------------------------"
2019-01-06 11:02:57 +00:00
echo "Updating your virtual env"
echo "-------------------------"
2018-01-29 07:35:13 +00:00
source .env/bin/activate
echo "pip3 install in-progress. Please wait..."
2019-01-05 19:04:54 +00:00
# Install numpy first to have py_find_1st install clean
pip3 install --upgrade pip numpy
pip3 install --upgrade -r requirements.txt
2019-01-06 11:02:57 +00:00
read -p "Do you want to install dependencies for dev [y/N]? "
if [[ $REPLY =~ ^[Yy]$ ]]
then
pip3 install --upgrade -r requirements-dev.txt
else
echo "Dev dependencies ignored."
fi
pip3 install --quiet -e .
echo "pip3 install completed"
echo
}
# Install tab lib
function install_talib() {
2019-01-05 18:51:51 +00:00
if [ -f /usr/local/lib/libta_lib.a ]; then
echo "ta-lib already installed, skipping"
return
fi
cd build_helpers
2018-01-29 07:35:13 +00:00
tar zxvf ta-lib-0.4.0-src.tar.gz
cd ta-lib
sed -i.bak "s|0.00000001|0.000000000000000001 |g" src/ta_func/ta_utility.h
./configure --prefix=/usr/local
make
sudo make install
cd .. && rm -rf ./ta-lib/
cd ..
}
# Install bot MacOS
function install_macos() {
2018-01-29 07:35:13 +00:00
if [ ! -x "$(command -v brew)" ]
then
echo "-------------------------"
2019-01-06 11:02:57 +00:00
echo "Installing Brew"
2018-01-29 07:35:13 +00:00
echo "-------------------------"
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fi
brew install python3 wget
install_talib
test_and_fix_python_on_mac
}
# Install bot Debian_ubuntu
function install_debian() {
2018-01-29 07:35:13 +00:00
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6 python3.6-venv python3.6-dev build-essential autoconf libtool pkg-config make wget git
install_talib
}
# Upgrade the bot
function update() {
2018-01-29 07:35:13 +00:00
git pull
updateenv
}
# Reset Develop or Master branch
function reset() {
2018-01-29 07:35:13 +00:00
echo "----------------------------"
2019-01-06 11:02:57 +00:00
echo "Reseting branch and virtual env"
2018-01-29 07:35:13 +00:00
echo "----------------------------"
if [ "1" == $(git branch -vv |grep -cE "\* develop|\* master") ]
then
2018-01-29 07:35:13 +00:00
if [ -d ".env" ]; then
echo "- Delete your previous virtual env"
rm -rf .env
fi
git fetch -a
if [ "1" == $(git branch -vv |grep -c "* develop") ]
then
echo "- Hard resetting of 'develop' branch."
git reset --hard origin/develop
elif [ "1" == $(git branch -vv |grep -c "* master") ]
then
echo "- Hard resetting of 'master' branch."
git reset --hard origin/master
fi
else
echo "Reset ignored because you are not on 'master' or 'develop'."
fi
echo
2018-08-12 08:37:10 +00:00
${PYTHON} -m venv .env
2018-01-29 07:35:13 +00:00
updateenv
}
function test_and_fix_python_on_mac() {
if ! [ -x "$(command -v python3.6)" ]
then
echo "-------------------------"
echo "Fixing Python"
echo "-------------------------"
echo "Python 3.6 is not linked in your system. Fixing it..."
brew link --overwrite python
echo
fi
}
function config_generator() {
2018-01-29 07:35:13 +00:00
echo "Starting to generate config.json"
echo
2019-01-06 11:02:57 +00:00
echo "Generating General configuration"
2018-01-29 07:35:13 +00:00
echo "-------------------------"
default_max_trades=3
read -p "Max open trades: (Default: $default_max_trades) " max_trades
max_trades=${max_trades:-$default_max_trades}
default_stake_amount=0.05
read -p "Stake amount: (Default: $default_stake_amount) " stake_amount
stake_amount=${stake_amount:-$default_stake_amount}
default_stake_currency="BTC"
read -p "Stake currency: (Default: $default_stake_currency) " stake_currency
stake_currency=${stake_currency:-$default_stake_currency}
default_fiat_currency="USD"
read -p "Fiat currency: (Default: $default_fiat_currency) " fiat_currency
fiat_currency=${fiat_currency:-$default_fiat_currency}
2018-01-29 07:35:13 +00:00
echo
2019-01-06 11:02:57 +00:00
echo "Generating exchange config "
echo "------------------------"
2018-01-29 07:35:13 +00:00
read -p "Exchange API key: " api_key
read -p "Exchange API Secret: " api_secret
echo
2019-01-06 11:02:57 +00:00
echo "Generating Telegram config"
2018-01-29 07:35:13 +00:00
echo "-------------------------"
read -p "Telegram Token: " token
read -p "Telegram Chat_id: " chat_id
sed -e "s/\"max_open_trades\": 3,/\"max_open_trades\": $max_trades,/g" \
-e "s/\"stake_amount\": 0.05,/\"stake_amount\": $stake_amount,/g" \
-e "s/\"stake_currency\": \"BTC\",/\"stake_currency\": \"$stake_currency\",/g" \
-e "s/\"fiat_display_currency\": \"USD\",/\"fiat_display_currency\": \"$fiat_currency\",/g" \
2018-01-31 08:46:20 +00:00
-e "s/\"your_exchange_key\"/\"$api_key\"/g" \
-e "s/\"your_exchange_secret\"/\"$api_secret\"/g" \
2018-02-03 20:55:15 +00:00
-e "s/\"your_telegram_token\"/\"$token\"/g" \
2018-04-18 11:11:37 +00:00
-e "s/\"your_telegram_chat_id\"/\"$chat_id\"/g" \
2018-01-29 07:35:13 +00:00
-e "s/\"dry_run\": false,/\"dry_run\": true,/g" config.json.example > config.json
}
function config() {
echo "-------------------------"
2019-01-06 11:02:57 +00:00
echo "Generating config file"
echo "-------------------------"
2018-01-29 07:35:13 +00:00
if [ -f config.json ]
then
2019-01-06 11:02:57 +00:00
read -p "A config file already exist, do you want to override it [y/N]? "
2018-01-29 07:35:13 +00:00
if [[ $REPLY =~ ^[Yy]$ ]]
then
config_generator
else
echo "Configuration of config.json ignored."
fi
else
config_generator
fi
echo
echo "-------------------------"
echo "Config file generated"
echo "-------------------------"
2018-01-29 07:35:13 +00:00
echo "Edit ./config.json to modify Pair and other configurations."
echo
}
function install() {
2018-01-29 07:35:13 +00:00
echo "-------------------------"
2019-01-06 11:02:57 +00:00
echo "Installing mandatory dependencies"
2018-01-29 07:35:13 +00:00
echo "-------------------------"
2018-01-29 07:35:13 +00:00
if [ "$(uname -s)" == "Darwin" ]
then
echo "macOS detected. Setup for this system in-progress"
2018-01-29 07:35:13 +00:00
install_macos
elif [ -x "$(command -v apt-get)" ]
then
echo "Debian/Ubuntu detected. Setup for this system in-progress"
2018-01-29 07:35:13 +00:00
install_debian
else
echo "This script does not support your OS."
2018-08-12 08:37:10 +00:00
echo "If you have Python3.6 or Python3.7, pip, virtualenv, ta-lib you can continue."
2018-01-29 07:35:13 +00:00
echo "Wait 10 seconds to continue the next install steps or use ctrl+c to interrupt this shell."
sleep 10
fi
echo
2018-01-29 07:35:13 +00:00
reset
config
echo "-------------------------"
2019-01-06 11:02:57 +00:00
echo "Run the bot !"
echo "-------------------------"
echo "You can now use the bot by executing 'source .env/bin/activate; python freqtrade'."
}
function plot() {
echo "
-----------------------------------------
2019-01-06 11:02:57 +00:00
Installing dependencies for Plotting scripts
-----------------------------------------
"
2018-01-29 07:35:13 +00:00
pip install plotly --upgrade
}
function help() {
2018-01-29 07:35:13 +00:00
echo "usage:"
echo " -i,--install Install freqtrade from scratch"
echo " -u,--update Command git pull to update."
echo " -r,--reset Hard reset your develop/master branch."
echo " -c,--config Easy config generator (Will override your existing file)."
echo " -p,--plot Install dependencies for Plotting scripts."
}
2018-08-12 08:37:10 +00:00
# Verify if 3.6 or 3.7 is installed
check_installed_python
case $* in
--install|-i)
install
;;
--config|-c)
config
;;
--update|-u)
update
;;
--reset|-r)
reset
;;
--plot|-p)
plot
;;
*)
help
;;
esac
2018-04-18 11:11:37 +00:00
exit 0