freqtrade_origin/en/2021.5/docker_quickstart/index.html

1140 lines
38 KiB
HTML
Raw Normal View History

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="../images/logo.png">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-material-7.1.5">
<title>Quickstart with Docker - Freqtrade</title>
<link rel="stylesheet" href="../assets/stylesheets/main.bde7dde4.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.ef6f36e2.min.css">
<meta name="theme-color" content="#546d78">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
<link rel="stylesheet" href="../stylesheets/ft.extra.css">
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="blue-grey" data-md-color-accent="tear">
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#using-freqtrade-with-docker" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="Freqtrade" class="md-header__button md-logo"
aria-label="Freqtrade">
<img src="../images/logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Freqtrade
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Quickstart with Docker
</span>
</div>
</div>
</div>
<div class="md-header__options">
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</label>
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/freqtrade/freqtrade" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="Freqtrade" class="md-nav__button md-logo" aria-label="Freqtrade" data-md-component="logo">
<img src="../images/logo.png" alt="logo">
</a>
Freqtrade
</label>
<div class="md-nav__source">
<a href="https://github.com/freqtrade/freqtrade" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
Quickstart with Docker
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
Quickstart with Docker
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#install-docker" class="md-nav__link">
Install Docker
</a>
</li>
<li class="md-nav__item">
<a href="#freqtrade-with-docker-compose" class="md-nav__link">
Freqtrade with docker-compose
</a>
<nav class="md-nav" aria-label="Freqtrade with docker-compose">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docker-quick-start" class="md-nav__link">
Docker quick start
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3">
Installation
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Installation" data-md-level="1">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Installation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../installation/" class="md-nav__link">
Linux/MacOS/Raspberry
</a>
</li>
<li class="md-nav__item">
<a href="../windows_installation/" class="md-nav__link">
Windows
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../bot-basics/" class="md-nav__link">
Freqtrade Basics
</a>
</li>
<li class="md-nav__item">
<a href="../configuration/" class="md-nav__link">
Configuration
</a>
</li>
<li class="md-nav__item">
<a href="../strategy-customization/" class="md-nav__link">
Strategy Customization
</a>
</li>
<li class="md-nav__item">
<a href="../plugins/" class="md-nav__link">
Plugins
</a>
</li>
<li class="md-nav__item">
<a href="../stoploss/" class="md-nav__link">
Stoploss
</a>
</li>
<li class="md-nav__item">
<a href="../bot-usage/" class="md-nav__link">
Start the bot
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_10">
Control the bot
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Control the bot" data-md-level="1">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
Control the bot
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../telegram-usage/" class="md-nav__link">
Telegram
</a>
</li>
<li class="md-nav__item">
<a href="../rest-api/" class="md-nav__link">
REST API & FreqUI
</a>
</li>
<li class="md-nav__item">
<a href="../webhook-config/" class="md-nav__link">
Web Hook
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../data-download/" class="md-nav__link">
Data Downloading
</a>
</li>
<li class="md-nav__item">
<a href="../backtesting/" class="md-nav__link">
Backtesting
</a>
</li>
<li class="md-nav__item">
<a href="../hyperopt/" class="md-nav__link">
Hyperopt
</a>
</li>
<li class="md-nav__item">
<a href="../utils/" class="md-nav__link">
Utility Sub-commands
</a>
</li>
<li class="md-nav__item">
<a href="../plotting/" class="md-nav__link">
Plotting
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_16" type="checkbox" id="__nav_16" >
<label class="md-nav__link" for="__nav_16">
Data Analysis
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Data Analysis" data-md-level="1">
<label class="md-nav__title" for="__nav_16">
<span class="md-nav__icon md-icon"></span>
Data Analysis
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../data-analysis/" class="md-nav__link">
Jupyter Notebooks
</a>
</li>
<li class="md-nav__item">
<a href="../strategy_analysis_example/" class="md-nav__link">
Strategy analysis
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../exchanges/" class="md-nav__link">
Exchange-specific Notes
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_18" type="checkbox" id="__nav_18" >
<label class="md-nav__link" for="__nav_18">
Advanced Topics
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Advanced Topics" data-md-level="1">
<label class="md-nav__title" for="__nav_18">
<span class="md-nav__icon md-icon"></span>
Advanced Topics
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../advanced-setup/" class="md-nav__link">
Advanced Post-installation Tasks
</a>
</li>
<li class="md-nav__item">
<a href="../edge/" class="md-nav__link">
Edge Positioning
</a>
</li>
<li class="md-nav__item">
<a href="../strategy-advanced/" class="md-nav__link">
Advanced Strategy
</a>
</li>
<li class="md-nav__item">
<a href="../advanced-hyperopt/" class="md-nav__link">
Advanced Hyperopt
</a>
</li>
<li class="md-nav__item">
<a href="../sandbox-testing/" class="md-nav__link">
Sandbox Testing
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../faq/" class="md-nav__link">
FAQ
</a>
</li>
<li class="md-nav__item">
<a href="../sql_cheatsheet/" class="md-nav__link">
SQL Cheat-sheet
</a>
</li>
<li class="md-nav__item">
<a href="../updating/" class="md-nav__link">
Updating Freqtrade
</a>
</li>
<li class="md-nav__item">
<a href="../deprecated/" class="md-nav__link">
Deprecated Features
</a>
</li>
<li class="md-nav__item">
<a href="../developer/" class="md-nav__link">
Contributors Guide
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#install-docker" class="md-nav__link">
Install Docker
</a>
</li>
<li class="md-nav__item">
<a href="#freqtrade-with-docker-compose" class="md-nav__link">
Freqtrade with docker-compose
</a>
<nav class="md-nav" aria-label="Freqtrade with docker-compose">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docker-quick-start" class="md-nav__link">
Docker quick start
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/freqtrade/freqtrade/edit/master/docs/docker_quickstart.md" title="Edit this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
</a>
<h1 id="using-freqtrade-with-docker">Using Freqtrade with Docker<a class="headerlink" href="#using-freqtrade-with-docker" title="Permanent link">&para;</a></h1>
<p>This page explains how to run the bot with Docker. It is not meant to work out of the box. You'll still need to read through the documentation and understand how to properly configure it.</p>
<h2 id="install-docker">Install Docker<a class="headerlink" href="#install-docker" title="Permanent link">&para;</a></h2>
<p>Start by downloading and installing Docker CE for your platform:</p>
<ul>
<li><a href="https://docs.docker.com/docker-for-mac/install/">Mac</a></li>
<li><a href="https://docs.docker.com/docker-for-windows/install/">Windows</a></li>
<li><a href="https://docs.docker.com/install/">Linux</a></li>
</ul>
<p>To simplify running freqtrade, <a href="https://docs.docker.com/compose/install/"><code>docker-compose</code></a> should be installed and available to follow the below <a href="#docker-quick-start">docker quick start guide</a>.</p>
<h2 id="freqtrade-with-docker-compose">Freqtrade with docker-compose<a class="headerlink" href="#freqtrade-with-docker-compose" title="Permanent link">&para;</a></h2>
<p>Freqtrade provides an official Docker image on <a href="https://hub.docker.com/r/freqtradeorg/freqtrade/">Dockerhub</a>, as well as a <a href="https://github.com/freqtrade/freqtrade/blob/stable/docker-compose.yml">docker-compose file</a> ready for usage.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<ul>
<li>The following section assumes that <code>docker</code> and <code>docker-compose</code> are installed and available to the logged in user.</li>
<li>All below commands use relative directories and will have to be executed from the directory containing the <code>docker-compose.yml</code> file.</li>
</ul>
</div>
<h3 id="docker-quick-start">Docker quick start<a class="headerlink" href="#docker-quick-start" title="Permanent link">&para;</a></h3>
<p>Create a new directory and place the <a href="https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml">docker-compose file</a> in this directory.</p>
<div class="tabbed-set" data-tabs="1:3"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><label for="__tabbed_1_1">PC/MAC/Linux</label><div class="tabbed-content">
<p>``` bash
mkdir ft_userdata
cd ft_userdata/</p>
<h1 id="download-the-docker-compose-file-from-the-repository">Download the docker-compose file from the repository<a class="headerlink" href="#download-the-docker-compose-file-from-the-repository" title="Permanent link">&para;</a></h1>
<p>curl <a href="https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml">https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml</a> -o docker-compose.yml</p>
<h1 id="pull-the-freqtrade-image">Pull the freqtrade image<a class="headerlink" href="#pull-the-freqtrade-image" title="Permanent link">&para;</a></h1>
<p>docker-compose pull</p>
<h1 id="create-user-directory-structure">Create user directory structure<a class="headerlink" href="#create-user-directory-structure" title="Permanent link">&para;</a></h1>
<p>docker-compose run --rm freqtrade create-userdir --userdir user_data</p>
<h1 id="create-configuration-requires-answering-interactive-questions">Create configuration - Requires answering interactive questions<a class="headerlink" href="#create-configuration-requires-answering-interactive-questions" title="Permanent link">&para;</a></h1>
<p>docker-compose run --rm freqtrade new-config --config user_data/config.json
```</p>
</div>
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">RaspberryPi</label><div class="tabbed-content">
<p>``` bash
mkdir ft_userdata
cd ft_userdata/</p>
<h1 id="download-the-docker-compose-file-from-the-repository_1">Download the docker-compose file from the repository<a class="headerlink" href="#download-the-docker-compose-file-from-the-repository_1" title="Permanent link">&para;</a></h1>
<p>curl <a href="https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml">https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml</a> -o docker-compose.yml</p>
<h1 id="edit-the-compose-file-to-use-an-image-named-_pi-stable_pi-or-develop_pi">Edit the compose file to use an image named <code>*_pi</code> (stable_pi or develop_pi)<a class="headerlink" href="#edit-the-compose-file-to-use-an-image-named-_pi-stable_pi-or-develop_pi" title="Permanent link">&para;</a></h1>
<h1 id="pull-the-freqtrade-image_1">Pull the freqtrade image<a class="headerlink" href="#pull-the-freqtrade-image_1" title="Permanent link">&para;</a></h1>
<p>docker-compose pull</p>
<h1 id="create-user-directory-structure_1">Create user directory structure<a class="headerlink" href="#create-user-directory-structure_1" title="Permanent link">&para;</a></h1>
<p>docker-compose run --rm freqtrade create-userdir --userdir user_data</p>
<h1 id="create-configuration-requires-answering-interactive-questions_1">Create configuration - Requires answering interactive questions<a class="headerlink" href="#create-configuration-requires-answering-interactive-questions_1" title="Permanent link">&para;</a></h1>
<p>docker-compose run --rm freqtrade new-config --config user_data/config.json
```</p>
<div class="admonition note">
<p class="admonition-title">Change your docker Image</p>
<p>You have to change the docker image in the docker-compose file for your Raspberry build to work properly.
``` yml
image: freqtradeorg/freqtrade:stable_pi</p>
<h1 id="image-freqtradeorgfreqtradedevelop_pi">image: freqtradeorg/freqtrade:develop_pi<a class="headerlink" href="#image-freqtradeorgfreqtradedevelop_pi" title="Permanent link">&para;</a></h1>
<p>```</p>
</div>
</div>
<input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><label for="__tabbed_1_3">ARM 64 Systenms (Mac M1, Raspberry Pi 4, Jetson Nano)</label><div class="tabbed-content">
<p>In case of a Mac M1, make sure that your docker installation is running in native mode
Arm64 images are not yet provided via Docker Hub and need to be build locally first.
Depending on the device, this may take a few minutes (Apple M1) or multiple hours (Raspberry Pi)</p>
<p>``` bash</p>
<h1 id="clone-freqtrade-repository">Clone Freqtrade repository<a class="headerlink" href="#clone-freqtrade-repository" title="Permanent link">&para;</a></h1>
<p>git clone <a href="https://github.com/freqtrade/freqtrade.git">https://github.com/freqtrade/freqtrade.git</a>
cd freqtrade</p>
<h1 id="optionally-switch-to-the-stable-version">Optionally switch to the stable version<a class="headerlink" href="#optionally-switch-to-the-stable-version" title="Permanent link">&para;</a></h1>
<p>git checkout stable </p>
<h1 id="modify-your-docker-compose-file-to-enable-building-and-change-the-image-name">Modify your docker-compose file to enable building and change the image name<a class="headerlink" href="#modify-your-docker-compose-file-to-enable-building-and-change-the-image-name" title="Permanent link">&para;</a></h1>
<h1 id="see-the-note-box-below-for-necessary-changes">(see the Note Box below for necessary changes)<a class="headerlink" href="#see-the-note-box-below-for-necessary-changes" title="Permanent link">&para;</a></h1>
<h1 id="build-image">Build image<a class="headerlink" href="#build-image" title="Permanent link">&para;</a></h1>
<p>docker-compose build</p>
<h1 id="create-user-directory-structure_2">Create user directory structure<a class="headerlink" href="#create-user-directory-structure_2" title="Permanent link">&para;</a></h1>
<p>docker-compose run --rm freqtrade create-userdir --userdir user_data</p>
<h1 id="create-configuration-requires-answering-interactive-questions_2">Create configuration - Requires answering interactive questions<a class="headerlink" href="#create-configuration-requires-answering-interactive-questions_2" title="Permanent link">&para;</a></h1>
<p>docker-compose run --rm freqtrade new-config --config user_data/config.json
```</p>
<div class="admonition note">
<p class="admonition-title">Change your docker Image</p>
<p>You have to change the docker image in the docker-compose file for your arm64 build to work properly.
<code>yml
image: freqtradeorg/freqtrade:custom_arm64
build:
context: .
dockerfile: "./docker/Dockerfile.aarch64"</code></p>
</div>
</div>
</div>
<p>The above snippet creates a new directory called <code>ft_userdata</code>, downloads the latest compose file and pulls the freqtrade image.
The last 2 steps in the snippet create the directory with <code>user_data</code>, as well as (interactively) the default configuration based on your selections.</p>
<div class="admonition question">
<p class="admonition-title">How to edit the bot configuration?</p>
<p>You can edit the configuration at any time, which is available as <code>user_data/config.json</code> (within the directory <code>ft_userdata</code>) when using the above configuration.</p>
<p>You can also change the both Strategy and commands by editing the command section of your <code>docker-compose.yml</code> file.</p>
</div>
<h4 id="adding-a-custom-strategy">Adding a custom strategy<a class="headerlink" href="#adding-a-custom-strategy" title="Permanent link">&para;</a></h4>
<ol>
<li>The configuration is now available as <code>user_data/config.json</code></li>
<li>Copy a custom strategy to the directory <code>user_data/strategies/</code></li>
<li>Add the Strategy' class name to the <code>docker-compose.yml</code> file</li>
</ol>
<p>The <code>SampleStrategy</code> is run by default.</p>
<div class="admonition warning">
<p class="admonition-title"><code>SampleStrategy</code> is just a demo!</p>
<p>The <code>SampleStrategy</code> is there for your reference and give you ideas for your own strategy.
Please always backtest your strategy and use dry-run for some time before risking real money!
You will find more information about Strategy development in the <a href="../strategy-customization/">Strategy documentation</a>.</p>
</div>
<p>Once this is done, you're ready to launch the bot in trading mode (Dry-run or Live-trading, depending on your answer to the corresponding question you made above).</p>
<p><code>bash
docker-compose up -d</code></p>
<div class="admonition warning">
<p class="admonition-title">Default configuration</p>
<p>While the configuration generated will be mostly functional, you will still need to verify that all options correspond to what you want (like Pricing, pairlist, ...) before starting the bot.</p>
</div>
<h4 id="monitoring-the-bot">Monitoring the bot<a class="headerlink" href="#monitoring-the-bot" title="Permanent link">&para;</a></h4>
<p>You can check for running instances with <code>docker-compose ps</code>.
This should list the service <code>freqtrade</code> as <code>running</code>. If that's not the case, best check the logs (see next point).</p>
<h4 id="docker-compose-logs">Docker-compose logs<a class="headerlink" href="#docker-compose-logs" title="Permanent link">&para;</a></h4>
<p>Logs will be written to: <code>user_data/logs/freqtrade.log</code>.<br />
You can also check the latest log with the command <code>docker-compose logs -f</code>.</p>
<h4 id="database">Database<a class="headerlink" href="#database" title="Permanent link">&para;</a></h4>
<p>The database will be located at: <code>user_data/tradesv3.sqlite</code></p>
<h4 id="updating-freqtrade-with-docker-compose">Updating freqtrade with docker-compose<a class="headerlink" href="#updating-freqtrade-with-docker-compose" title="Permanent link">&para;</a></h4>
<p>Updating freqtrade when using <code>docker-compose</code> is as simple as running the following 2 commands:</p>
<p>``` bash</p>
<h1 id="download-the-latest-image">Download the latest image<a class="headerlink" href="#download-the-latest-image" title="Permanent link">&para;</a></h1>
<p>docker-compose pull</p>
<h1 id="restart-the-image">Restart the image<a class="headerlink" href="#restart-the-image" title="Permanent link">&para;</a></h1>
<p>docker-compose up -d
```</p>
<p>This will first pull the latest image, and will then restart the container with the just pulled version.</p>
<div class="admonition warning">
<p class="admonition-title">Check the Changelog</p>
<p>You should always check the changelog for breaking changes / manual interventions required and make sure the bot starts correctly after the update.</p>
</div>
<h3 id="editing-the-docker-compose-file">Editing the docker-compose file<a class="headerlink" href="#editing-the-docker-compose-file" title="Permanent link">&para;</a></h3>
<p>Advanced users may edit the docker-compose file further to include all possible options or arguments.</p>
<p>All freqtrade arguments will be available by running <code>docker-compose run --rm freqtrade &lt;command&gt; &lt;optional arguments&gt;</code>.</p>
<div class="admonition note">
<p class="admonition-title"><code>docker-compose run --rm</code></p>
<p>Including <code>--rm</code> will remove the container after completion, and is highly recommended for all modes except trading mode (running with <code>freqtrade trade</code> command).</p>
</div>
<h4 id="example-download-data-with-docker-compose">Example: Download data with docker-compose<a class="headerlink" href="#example-download-data-with-docker-compose" title="Permanent link">&para;</a></h4>
<p>Download backtesting data for 5 days for the pair ETH/BTC and 1h timeframe from Binance. The data will be stored in the directory <code>user_data/data/</code> on the host.</p>
<p><code>bash
docker-compose run --rm freqtrade download-data --pairs ETH/BTC --exchange binance --days 5 -t 1h</code></p>
<p>Head over to the <a href="../data-download/">Data Downloading Documentation</a> for more details on downloading data.</p>
<h4 id="example-backtest-with-docker-compose">Example: Backtest with docker-compose<a class="headerlink" href="#example-backtest-with-docker-compose" title="Permanent link">&para;</a></h4>
<p>Run backtesting in docker-containers for SampleStrategy and specified timerange of historical data, on 5m timeframe:</p>
<p><code>bash
docker-compose run --rm freqtrade backtesting --config user_data/config.json --strategy SampleStrategy --timerange 20190801-20191001 -i 5m</code></p>
<p>Head over to the <a href="../backtesting/">Backtesting Documentation</a> to learn more.</p>
<h3 id="additional-dependencies-with-docker-compose">Additional dependencies with docker-compose<a class="headerlink" href="#additional-dependencies-with-docker-compose" title="Permanent link">&para;</a></h3>
<p>If your strategy requires dependencies not included in the default image - it will be necessary to build the image on your host.
For this, please create a Dockerfile containing installation steps for the additional dependencies (have a look at <a href="https://github.com/freqtrade/freqtrade/blob/develop/docker/Dockerfile.custom">docker/Dockerfile.custom</a> for an example).</p>
<p>You'll then also need to modify the <code>docker-compose.yml</code> file and uncomment the build step, as well as rename the image to avoid naming collisions.</p>
<p><code>yaml
image: freqtrade_custom
build:
context: .
dockerfile: "./Dockerfile.&lt;yourextension&gt;"</code></p>
<p>You can then run <code>docker-compose build</code> to build the docker image, and run it using the commands described above.</p>
<h2 id="plotting-with-docker-compose">Plotting with docker-compose<a class="headerlink" href="#plotting-with-docker-compose" title="Permanent link">&para;</a></h2>
<p>Commands <code>freqtrade plot-profit</code> and <code>freqtrade plot-dataframe</code> (<a href="../plotting/">Documentation</a>) are available by changing the image to <code>*_plot</code> in your docker-compose.yml file.
You can then use these commands as follows:</p>
<p><code>bash
docker-compose run --rm freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --timerange=20180801-20180805</code></p>
<p>The output will be stored in the <code>user_data/plot</code> directory, and can be opened with any modern browser.</p>
<h2 id="data-analysis-using-docker-compose">Data analysis using docker compose<a class="headerlink" href="#data-analysis-using-docker-compose" title="Permanent link">&para;</a></h2>
<p>Freqtrade provides a docker-compose file which starts up a jupyter lab server.
You can run this server using the following command:</p>
<p><code>bash
docker-compose -f docker/docker-compose-jupyter.yml up</code></p>
<p>This will create a docker-container running jupyter lab, which will be accessible using <code>https://127.0.0.1:8888/lab</code>.
Please use the link that's printed in the console after startup for simplified login.</p>
<p>Since part of this image is built on your machine, it is recommended to rebuild the image from time to time to keep freqtrade (and dependencies) up-to-date.</p>
<p><code>bash
docker-compose -f docker/docker-compose-jupyter.yml build --no-cache</code></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer">
<a href=".." class="md-footer__link md-footer__link--prev" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Home
</div>
</div>
</a>
<a href="../installation/" class="md-footer__link md-footer__link--next" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Linux/MacOS/Raspberry
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.d351de03.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing"}, "version": {"provider": "mike"}}</script>
<script src="../assets/javascripts/bundle.a1609d9a.min.js"></script>
<script src="../javascripts/config.js"></script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</body>
</html>