diff --git a/docs/installation.md b/docs/installation.md index 8cb6724cb..d2661f88f 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -2,94 +2,49 @@ This page explains how to prepare your environment for running the bot. +The freqtrade documentation describes various ways to install freqtrade + +* [Docker images](docker_quickstart.md) (separate page) +* [Script Installation](#script-installation) +* [Manual Installation](#manual-installation) +* [Installation with Conda](#installation-with-conda) + Please consider using the prebuilt [docker images](docker_quickstart.md) to get started quickly while evaluating how freqtrade works. -## Prerequisite +------ -### Requirements +## Information -Click each one for install guide: +For Windows installation, please use the [windows installation guide](windows_installation.md). -* [Python >= 3.7.x](http://docs.python-guide.org/en/latest/starting/installation/) -* [pip](https://pip.pypa.io/en/stable/installing/) -* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) -* [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended) -* [TA-Lib](https://mrjbq7.github.io/ta-lib/install.html) (install instructions below) - - We also recommend a [Telegram bot](telegram-usage.md#setup-your-telegram-bot), which is optional but recommended. - -!!! Warning "Up-to-date clock" - The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges. - -## Quick start - -Freqtrade provides the Linux/MacOS Easy Installation script to install all dependencies and help you configure the bot. - -!!! Note - Windows installation is explained [here](#windows). - -The easiest way to install and run Freqtrade is to clone the bot Github repository and then run the Easy Installation script, if it's available for your platform. +The easiest way to install and run Freqtrade is to clone the bot Github repository and then run the `./setup.sh` script, if it's available for your platform. !!! Note "Version considerations" - When cloning the repository the default working branch has the name `develop`. This branch contains all last features (can be considered as relatively stable, thanks to automated tests). The `stable` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). + When cloning the repository the default working branch has the name `develop`. This branch contains all last features (can be considered as relatively stable, thanks to automated tests). + The `stable` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). !!! Note Python3.7 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository. Also, python headers (`python-dev` / `python-devel`) must be available for the installation to complete successfully. -This can be achieved with the following commands: - -```bash -git clone https://github.com/freqtrade/freqtrade.git -cd freqtrade -# git checkout stable # Optional, see (1) -./setup.sh --install -``` - -(1) This command switches the cloned repository to the use of the `stable` branch. It's not needed if you wish to stay on the `develop` branch. You may later switch between branches at any time with the `git checkout stable`/`git checkout develop` commands. - -## Easy Installation Script (Linux/MacOS) - -If you are on Debian, Ubuntu or MacOS Freqtrade provides the script to install, update, configure and reset the codebase of your bot. - -```bash -$ ./setup.sh -usage: - -i,--install Install freqtrade from scratch - -u,--update Command git pull to update. - -r,--reset Hard reset your develop/stable branch. - -c,--config Easy config generator (Will override your existing file). -``` - -** --install ** - -With this option, the script will install the bot and most dependencies: -You will need to have git and python3.7+ installed beforehand for this to work. - -* Mandatory software as: `ta-lib` -* Setup your virtualenv under `.env/` - -This option is a combination of installation tasks, `--reset` and `--config`. - -** --update ** - -This option will pull the last version of your current branch and update your virtualenv. Run the script with this option periodically to update your bot. - -** --reset ** - -This option will hard reset your branch (only if you are on either `stable` or `develop`) and recreate your virtualenv. - -** --config ** - -DEPRECATED - use `freqtrade new-config -c config.json` instead. - -### Activate your virtual environment - -Each time you open a new terminal, you must run `source .env/bin/activate`. +!!! Warning "Up-to-date clock" + The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges. ------ -## Custom Installation +## Requirements + +These requirements apply to both [Script Installation](#script-installation) and [Manual Installation](#manual-installation). + +### Install guide + +* [Python >= 3.7.x](http://docs.python-guide.org/en/latest/starting/installation/) +* [pip](https://pip.pypa.io/en/stable/installing/) +* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +* [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended) +* [TA-Lib](https://mrjbq7.github.io/ta-lib/install.html) (install instructions [below](#install-ta-lib)) + +### Install code We've included/collected install instructions for Ubuntu, MacOS, and Windows. These are guidelines and your success may vary with other distros. OS Specific steps are listed first, the [Common](#common) section below is necessary for all systems. @@ -97,12 +52,15 @@ OS Specific steps are listed first, the [Common](#common) section below is neces !!! Note Python3.7 or higher and the corresponding pip are assumed to be available. -=== "Ubuntu/Debian" +=== "Debian/Ubuntu" #### Install necessary dependencies ```bash + # update repository sudo apt-get update - sudo apt-get install build-essential git + + # install packages + sudo apt install -y python3-pip python3-venv python3-pandas python3-pip git ``` === "RaspberryPi/Raspbian" @@ -110,9 +68,9 @@ OS Specific steps are listed first, the [Common](#common) section below is neces This image comes with python3.7 preinstalled, making it easy to get freqtrade up and running. Tested using a Raspberry Pi 3 with the Raspbian Buster lite image, all updates applied. - - ``` bash + + ```bash sudo apt-get install python3-venv libatlas-base-dev cmake # Use pywheels.org to speed up installation sudo echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > tee /etc/pip.conf @@ -125,17 +83,106 @@ OS Specific steps are listed first, the [Common](#common) section below is neces !!! Note "Installation duration" Depending on your internet speed and the Raspberry Pi version, installation can take multiple hours to complete. - Due to this, we recommend to use the prebuild docker-image for Raspberry, by following the [Docker quickstart documentation](docker_quickstart.md) + Due to this, we recommend to use the pre-build docker-image for Raspberry, by following the [Docker quickstart documentation](docker_quickstart.md) !!! Note The above does not install hyperopt dependencies. To install these, please use `python3 -m pip install -e .[hyperopt]`. We do not advise to run hyperopt on a Raspberry Pi, since this is a very resource-heavy operation, which should be done on powerful machine. -### Common +------ -#### 1. Install TA-Lib +## Freqtrade repository -Use the provided ta-lib installation script +Freqtrade is an open source crypto-currency trading bot, whose code is hosted on `github.com` + +```bash +# Download `develop` branch of freqtrade repository +git clone https://github.com/freqtrade/freqtrade.git + +# Enter downloaded directory +cd freqtrade + +# your choice (1): novice user +git checkout stable + +# your choice (2): advanced user +git checkout develop +``` + +(1) This command switches the cloned repository to the use of the `stable` branch. It's not needed, if you wish to stay on the (2) `develop` branch. + +You may later switch between branches at any time with the `git checkout stable`/`git checkout develop` commands. + +------ + +## Script Installation + +First of the ways to install Freqtrade, is to use provided the Linux/MacOS `./setup.sh` script, which install all dependencies and help you configure the bot. + +Make sure you fulfill the [Requirements](#requirements) and have downloaded the [Freqtrade repository](#freqtrade-repository). + +### Use /setup.sh -install (Linux/MacOS) + +If you are on Debian, Ubuntu or MacOS, freqtrade provides the script to install freqtrade. + +```bash +# --install, Install freqtrade from scratch +./setup.sh -i +``` + +### Activate your virtual environment + +Each time you open a new terminal, you must run `source .env/bin/activate` to activate your virtual environment. + +```bash +# then activate your .env +source ./.env/bin/activate +``` + +### Congratulations + +[You are ready](#you-are-ready), and run the bot + +### Other options of /setup.sh script + +You can as well update, configure and reset the codebase of your bot with `./script.sh` + +```bash +# --update, Command git pull to update. +./setup.sh -u +# --reset, Hard reset your develop/stable branch. +./setup.sh -r +``` + +``` +** --install ** + +With this option, the script will install the bot and most dependencies: +You will need to have git and python3.7+ installed beforehand for this to work. + +* Mandatory software as: `ta-lib` +* Setup your virtualenv under `.env/` + +This option is a combination of installation tasks and `--reset` + +** --update ** + +This option will pull the last version of your current branch and update your virtualenv. Run the script with this option periodically to update your bot. + +** --reset ** + +This option will hard reset your branch (only if you are on either `stable` or `develop`) and recreate your virtualenv. +``` + +----- + +## Manual Installation + +Make sure you fulfill the [Requirements](#requirements) and have downloaded the [Freqtrade repository](#freqtrade-repository). + +### Install TA-Lib + +#### TA-Lib script installation ```bash sudo ./build_helpers/install_ta-lib.sh @@ -160,77 +207,193 @@ cd .. rm -rf ./ta-lib* ``` -!!! Note - An already downloaded version of ta-lib is included in the repository, as the sourceforge.net source seems to have problems frequently. +#### Setup Python virtual environment (virtualenv) -#### 2. Setup your Python virtual environment (virtualenv) - -!!! Note - This step is optional but strongly recommended to keep your system organized +You will run freqtrade in separated `virtual environment` ```bash +# create virtualenv in directory /freqtrade/.env python3 -m venv .env + +# run virtualenv source .env/bin/activate ``` -#### 3. Install Freqtrade - -Clone the git repository: +#### Install python dependencies ```bash -git clone https://github.com/freqtrade/freqtrade.git -cd freqtrade -git checkout stable -``` - -#### 4. Install python dependencies - -``` bash python3 -m pip install --upgrade pip python3 -m pip install -e . ``` -#### 5. Initialize the configuration +### Congratulations -```bash -# Initialize the user_directory -freqtrade create-userdir --userdir user_data/ +[You are ready](#you-are-ready), and run the bot -# Create a new configuration file -freqtrade new-config --config config.json -``` +#### (Optional) Post-installation Tasks -> *To edit the config please refer to [Bot Configuration](configuration.md).* +!!! Note + If you run the bot on a server, you should consider using [Docker](docker_quickstart.md) or a terminal multiplexer like `screen` or [`tmux`](https://en.wikipedia.org/wiki/Tmux) to avoid that the bot is stopped on logout. -#### 6. Run the Bot - -If this is the first time you run the bot, ensure you are running it in Dry-run `"dry_run": true,` otherwise it will start to buy and sell coins. - -```bash -freqtrade trade -c config.json -``` - -*Note*: If you run the bot on a server, you should consider using [Docker compose](docker_quickstart.md) or a terminal multiplexer like `screen` or [`tmux`](https://en.wikipedia.org/wiki/Tmux) to avoid that the bot is stopped on logout. - -#### 7. (Optional) Post-installation Tasks - -On Linux, as an optional post-installation task, you may wish to setup the bot to run as a `systemd` service or configure it to send the log messages to the `syslog`/`rsyslog` or `journald` daemons. See [Advanced Logging](advanced-setup.md#advanced-logging) for details. +On Linux with software suite `systemd`, as an optional post-installation task, you may wish to setup the bot to run as a `systemd service` or configure it to send the log messages to the `syslog`/`rsyslog` or `journald` daemons. See [Advanced Logging](advanced-setup.md#advanced-logging) for details. ------ -### Anaconda +## Installation with Conda -Freqtrade can also be installed using Anaconda (or Miniconda). +Freqtrade can also be installed with Miniconda or Anaconda. We recommend using Miniconda as it's installation footprint is smaller. Conda will automatically prepare and manage the extensive library-dependencies of the Freqtrade program. -!!! Note - This requires the [ta-lib](#1-install-ta-lib) C-library to be installed first. See below. +### What is Conda? -``` bash -conda env create -f environment.yml +Conda is a package, dependency and environment manager for multiple programming languages: [conda docs](https://docs.conda.io/projects/conda/en/latest/index.html) + +### Installation with conda + +#### Install Conda + +[Installing on linux](https://conda.io/projects/conda/en/latest/user-guide/install/linux.html#install-linux-silent) + +[Installing on windows](https://conda.io/projects/conda/en/latest/user-guide/install/windows.html) + +Answer all questions. After installation, it is mandatory to turn your terminal OFF and ON again. + +#### Freqtrade download + +Download and install freqtrade. + +```bash +# download freqtrade +git clone https://github.com/freqtrade/freqtrade.git + +# enter downloaded directory 'freqtrade' +cd freqtrade ``` +#### Freqtrade instal: Conda Environment + +Prepare conda-freqtrade environment, using file `environment.yml`, which exist in main freqtrade directory + +```bash +conda env create -n freqtrade-conda -f environment.yml +``` + +!!! Note "Creating Conda Environment" + The conda command `create -n` automatically installs all nested dependencies for the selected libraries, general structure of installation command is: + + ```bash + # choose your own packages + conda env create -n [name of the environment] [python version] [packages] + + # point to file with packages + conda env create -n [name of the environment] -f [file] + ``` + +#### Enter/exit freqtrade-conda environment + +To check available environments, type + +```bash +conda env list +``` + +Enter installed environment + +```bash +# enter conda environment +conda activate freqtrade-conda + +# exit conda environment - don't do it now +conda deactivate +``` + +Install last python dependencies with pip + +```bash +python3 -m pip install --upgrade pip +python3 -m pip install -e . +``` + +### Congratulations + +[You are ready](#you-are-ready), and run the bot + +### Important shortcuts + +```bash +# list installed conda environments +conda env list + +# activate base environment +conda activate + +# activate freqtrade-conda environment +conda activate freqtrade-conda + +#deactivate any conda environments +conda deactivate +``` + +### Further info on anaconda + +!!! Info "New heavy packages" + It may happen that creating a new Conda environment, populated with selected packages at the moment of creation takes less time than installing a large, heavy library or application, into previously set environment. + +!!! Warning "pip install within conda" + The documentation of conda says that pip should NOT be used within conda, because internal problems can occur. + However, they are rare. [Anaconda Blogpost](https://www.anaconda.com/blog/using-pip-in-a-conda-environment) + + Nevertheless, that is why, the `conda-forge` channel is preferred: + + * more libraries are available (less need for `pip`) + * `conda-forge` works better with `pip` + * the libraries are newer + +Happy trading! + ----- -## Troubleshooting + +## You are ready + +You've made it this far, so you have successfully installed freqtrade. + +### Initialize the configuration + +```bash +# Step 1 - Initialize user folder +freqtrade create-userdir --userdir user_data + +# Step 2 - Create a new configuration file +freqtrade new-config --config config.json +``` + +You are ready to run, read [Bot Configuration](configuration.md), remember to start with `dry_run: True` and verify that everything is working. + +To learn how to setup your configuration, please refer to the [Bot Configuration](configuration.md) documentation page. + +### Start the Bot + +```bash +freqtrade trade --config config.json --strategy SampleStrategy +``` + +!!! Warning + You should read through the rest of the documentation, backtest the strategy you're going to use, and use dry-run before enabling trading with real money. + +----- + +## Troubleshooting + +### Common problem: "command not found" + +If you used (1)`Script` or (2)`Manual` installation, you need to run the bot in virtual environment. If you get error as below, make sure venv is active. + +```bash +# if: +bash: freqtrade: command not found + +# then activate your .env +source ./.env/bin/activate +``` ### MacOS installation error @@ -239,7 +402,7 @@ Newer versions of MacOS may have installation failed with errors like `error: co This error will require explicit installation of the SDK Headers, which are not installed by default in this version of MacOS. For MacOS 10.14, this can be accomplished with the below command. -``` bash +```bash open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ``` @@ -252,13 +415,8 @@ The errors you'll see happen during installation and are related to the installa You can install the necessary libraries with the following command: -``` bash +```bash brew install hdf5 c-blosc ``` After this, please run the installation (script) again. - ------ - -Now you have an environment ready, the next step is -[Bot Configuration](configuration.md). diff --git a/environment.yml b/environment.yml index 746c4b912..938b5b6b8 100644 --- a/environment.yml +++ b/environment.yml @@ -1,60 +1,71 @@ name: freqtrade channels: - - defaults - conda-forge +# - defaults dependencies: - # Required for app - - python>=3.7 - - pip - - wheel - - numpy - - pandas - - SQLAlchemy - - arrow - - requests - - urllib3 - - wrapt - - jsonschema - - tabulate - - python-rapidjson - - flask - - python-dotenv - - cachetools - - python-telegram-bot - # Optional for plotting - - plotly - # Optional for hyperopt - - scipy - - scikit-optimize - - scikit-learn - - filelock - - joblib - # Optional for development - - flake8 - - pytest - - pytest-mock - - pytest-asyncio - - pytest-cov - - coveralls - - mypy - # Useful for jupyter - - jupyter - - ipykernel - - isort - - yapf - - pip: - # Required for app - - cython - - pycoingecko - - ccxt +# 1/4 req main + - python>=3.7 + - numpy + - pandas + - pip + + - aiohttp + - SQLAlchemy + - python-telegram-bot + - arrow + - cachetools + - requests + - urllib3 + - wrapt + - jsonschema - TA-Lib - - py_find_1st + - tabulate + - jinja2 + - blosc - sdnotify - # Optional for develpment - - flake8-tidy-imports - - flake8-type-annotations - - pytest-random-order - - -e . + - fastapi + - uvicorn + - pyjwt + - colorama + - questionary + - prompt-toolkit + # ============================ + # 2/4 req dev + - coveralls + - flake8 + - mypy + - pytest + - pytest-asyncio + - pytest-cov + - pytest-mock + - isort + - nbconvert + + # ============================ + # 3/4 req hyperopt + + - scipy + - scikit-learn + - filelock + - scikit-optimize + - joblib + - progressbar2 + # ============================ + # 4/4 req plot + + - plotly + - jupyter + + - pip: + - pycoingecko + - py_find_1st + - tables + - pytest-random-order + - flake8-type-annotations + - ccxt + - flake8-tidy-imports + - -e . + # - python-rapidjso