2018-01-12 10:49:50 +00:00
|
|
|
# Plotting
|
2019-05-27 17:42:12 +00:00
|
|
|
|
2019-05-28 05:06:26 +00:00
|
|
|
This page explains how to plot prices, indicators and profits.
|
2018-01-12 10:49:50 +00:00
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
## Installation / Setup
|
2018-01-28 10:53:52 +00:00
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
Plotting modules use the Plotly library. You can install / upgrade this by running the following command:
|
2018-01-28 10:53:52 +00:00
|
|
|
|
2019-05-27 17:42:12 +00:00
|
|
|
``` bash
|
|
|
|
pip install -U -r requirements-plot.txt
|
2018-01-28 10:53:52 +00:00
|
|
|
```
|
|
|
|
|
2018-01-12 10:49:50 +00:00
|
|
|
## Plot price and indicators
|
2019-05-27 17:42:12 +00:00
|
|
|
|
2019-08-30 18:42:14 +00:00
|
|
|
The `freqtrade plot-dataframe` subcommand shows an interactive graph with three subplots:
|
2019-08-24 13:09:33 +00:00
|
|
|
|
|
|
|
* Main plot with candlestics and indicators following price (sma/ema)
|
|
|
|
* Volume bars
|
|
|
|
* Additional indicators as specified by `--indicators2`
|
|
|
|
|
|
|
|
![plot-dataframe](assets/plot-dataframe.png)
|
|
|
|
|
|
|
|
Possible arguments:
|
2019-08-22 15:16:33 +00:00
|
|
|
|
|
|
|
```
|
2019-12-22 09:16:49 +00:00
|
|
|
usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
|
|
|
|
[--strategy-path PATH] [-p PAIRS [PAIRS ...]] [--indicators1 INDICATORS1 [INDICATORS1 ...]]
|
|
|
|
[--indicators2 INDICATORS2 [INDICATORS2 ...]] [--plot-limit INT] [--db-url PATH]
|
|
|
|
[--trade-source {DB,file}] [--export EXPORT] [--export-filename PATH] [--timerange TIMERANGE]
|
|
|
|
[-i TICKER_INTERVAL]
|
2019-08-22 15:16:33 +00:00
|
|
|
|
|
|
|
optional arguments:
|
|
|
|
-h, --help show this help message and exit
|
|
|
|
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
2019-12-22 09:16:49 +00:00
|
|
|
Show profits for only these pairs. Pairs are space-separated.
|
2019-08-22 15:16:33 +00:00
|
|
|
--indicators1 INDICATORS1 [INDICATORS1 ...]
|
2019-12-22 09:16:49 +00:00
|
|
|
Set indicators from your strategy you want in the first row of the graph. Space-separated list. Example:
|
2019-08-22 15:16:33 +00:00
|
|
|
`ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`.
|
|
|
|
--indicators2 INDICATORS2 [INDICATORS2 ...]
|
2019-12-22 09:16:49 +00:00
|
|
|
Set indicators from your strategy you want in the third row of the graph. Space-separated list. Example:
|
2019-08-22 15:16:33 +00:00
|
|
|
`fastd fastk`. Default: `['macd', 'macdsignal']`.
|
2019-12-22 09:16:49 +00:00
|
|
|
--plot-limit INT Specify tick limit for plotting. Notice: too high values cause huge files. Default: 750.
|
|
|
|
--db-url PATH Override trades database URL, this is useful in custom deployments (default: `sqlite:///tradesv3.sqlite`
|
|
|
|
for Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for Dry Run).
|
2019-08-22 15:16:33 +00:00
|
|
|
--trade-source {DB,file}
|
2019-12-22 09:16:49 +00:00
|
|
|
Specify the source for trades (Can be DB or file (backtest file)) Default: file
|
|
|
|
--export EXPORT Export backtest results, argument are: trades. Example: `--export=trades`
|
2019-08-22 15:16:33 +00:00
|
|
|
--export-filename PATH
|
2019-12-22 09:16:49 +00:00
|
|
|
Save backtest results to the file with this filename. Requires `--export` to be set as well. Example:
|
|
|
|
`--export-filename=user_data/backtest_results/backtest_today.json`
|
2019-08-22 15:16:33 +00:00
|
|
|
--timerange TIMERANGE
|
|
|
|
Specify what timerange of data to use.
|
2019-09-29 17:18:02 +00:00
|
|
|
-i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
|
2019-12-22 09:16:49 +00:00
|
|
|
Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`).
|
2019-09-29 17:18:02 +00:00
|
|
|
|
|
|
|
Common arguments:
|
|
|
|
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
2019-12-22 09:16:49 +00:00
|
|
|
--logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more
|
|
|
|
details.
|
2019-09-29 17:18:02 +00:00
|
|
|
-V, --version show program's version number and exit
|
|
|
|
-c PATH, --config PATH
|
2019-12-22 09:16:49 +00:00
|
|
|
Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to
|
2019-09-29 17:18:02 +00:00
|
|
|
`-` to read config from stdin.
|
|
|
|
-d PATH, --datadir PATH
|
|
|
|
Path to directory with historical backtesting data.
|
|
|
|
--userdir PATH, --user-data-dir PATH
|
|
|
|
Path to userdata directory.
|
|
|
|
|
|
|
|
Strategy arguments:
|
|
|
|
-s NAME, --strategy NAME
|
2019-12-22 09:16:49 +00:00
|
|
|
Specify strategy class name which will be used by the bot.
|
2019-09-29 17:18:02 +00:00
|
|
|
--strategy-path PATH Specify additional strategy lookup path.
|
2018-01-28 10:53:52 +00:00
|
|
|
|
|
|
|
```
|
2018-01-12 10:49:50 +00:00
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
Example:
|
2019-05-27 17:42:12 +00:00
|
|
|
|
|
|
|
``` bash
|
2019-08-22 15:16:33 +00:00
|
|
|
freqtrade plot-dataframe -p BTC/ETH
|
2018-01-12 10:49:50 +00:00
|
|
|
```
|
|
|
|
|
2019-08-30 18:42:14 +00:00
|
|
|
The `-p/--pairs` argument can be used to specify pairs you would like to plot.
|
2019-08-22 15:16:33 +00:00
|
|
|
|
|
|
|
!!! Note
|
2019-08-30 18:42:14 +00:00
|
|
|
The `freqtrade plot-dataframe` subcommand generates one plot-file per pair.
|
2019-05-28 05:06:26 +00:00
|
|
|
|
|
|
|
Specify custom indicators.
|
|
|
|
Use `--indicators1` for the main plot and `--indicators2` for the subplot below (if values are in a different range than prices).
|
|
|
|
|
2019-10-30 12:27:04 +00:00
|
|
|
!!! Tip
|
2019-08-31 13:31:47 +00:00
|
|
|
You will almost certainly want to specify a custom strategy! This can be done by adding `-s Classname` / `--strategy ClassName` to the command.
|
2019-08-24 13:09:33 +00:00
|
|
|
|
2019-05-28 05:06:26 +00:00
|
|
|
``` bash
|
2019-09-29 17:18:02 +00:00
|
|
|
freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --indicators1 sma ema --indicators2 macd
|
2019-05-28 05:06:26 +00:00
|
|
|
```
|
2018-01-12 10:49:50 +00:00
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
### Further usage examples
|
2018-01-21 12:44:30 +00:00
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
To plot multiple pairs, separate them with a space:
|
2019-05-27 17:42:12 +00:00
|
|
|
|
|
|
|
``` bash
|
2019-09-29 17:18:02 +00:00
|
|
|
freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH XRP/ETH
|
2019-01-23 18:11:05 +00:00
|
|
|
```
|
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
To plot a timerange (to zoom in)
|
2019-05-27 17:42:12 +00:00
|
|
|
|
|
|
|
``` bash
|
2019-09-29 17:18:02 +00:00
|
|
|
freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --timerange=20180801-20180805
|
2018-01-21 12:44:30 +00:00
|
|
|
```
|
2019-05-27 17:42:12 +00:00
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
To plot trades stored in a database use `--db-url` in combination with `--trade-source DB`:
|
2019-05-27 17:42:12 +00:00
|
|
|
|
|
|
|
``` bash
|
2019-09-29 17:18:02 +00:00
|
|
|
freqtrade plot-dataframe --strategy AwesomeStrategy --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB
|
2018-05-19 06:14:42 +00:00
|
|
|
```
|
2019-05-27 17:42:12 +00:00
|
|
|
|
2019-05-28 05:06:26 +00:00
|
|
|
To plot trades from a backtesting result, use `--export-filename <filename>`
|
2019-05-27 17:42:12 +00:00
|
|
|
|
|
|
|
``` bash
|
2019-09-29 17:18:02 +00:00
|
|
|
freqtrade plot-dataframe --strategy AwesomeStrategy --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH
|
2018-06-07 15:13:55 +00:00
|
|
|
```
|
|
|
|
|
2018-01-12 09:55:49 +00:00
|
|
|
## Plot profit
|
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
![plot-profit](assets/plot-profit.png)
|
|
|
|
|
2019-08-30 18:42:14 +00:00
|
|
|
The `freqtrade plot-profit` subcommand shows an interactive graph with three plots:
|
2019-05-27 17:42:12 +00:00
|
|
|
|
2018-01-12 09:55:49 +00:00
|
|
|
1) Average closing price for all pairs
|
|
|
|
2) The summarized profit made by backtesting.
|
2019-08-24 13:09:33 +00:00
|
|
|
Note that this is not the real-world profit, but more of an estimate.
|
|
|
|
3) Profit for each individual pair
|
2018-01-12 09:55:49 +00:00
|
|
|
|
2019-08-22 15:16:33 +00:00
|
|
|
The first graph is good to get a grip of how the overall market progresses.
|
2018-01-12 09:55:49 +00:00
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
The second graph will show if your algorithm works or doesn't.
|
|
|
|
Perhaps you want an algorithm that steadily makes small profits, or one that acts less often, but makes big swings.
|
2018-01-12 09:55:49 +00:00
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
The third graph can be useful to spot outliers, events in pairs that cause profit spikes.
|
2018-01-12 09:55:49 +00:00
|
|
|
|
2019-08-30 18:42:14 +00:00
|
|
|
Possible options for the `freqtrade plot-profit` subcommand:
|
2018-01-28 10:53:52 +00:00
|
|
|
|
2019-08-22 15:16:33 +00:00
|
|
|
```
|
2019-09-29 17:18:02 +00:00
|
|
|
usage: freqtrade plot-profit [-h] [-v] [--logfile FILE] [-V] [-c PATH]
|
|
|
|
[-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]]
|
2019-08-22 15:16:33 +00:00
|
|
|
[--timerange TIMERANGE] [--export EXPORT]
|
|
|
|
[--export-filename PATH] [--db-url PATH]
|
2019-09-29 17:18:02 +00:00
|
|
|
[--trade-source {DB,file}] [-i TICKER_INTERVAL]
|
2019-08-22 15:16:33 +00:00
|
|
|
|
|
|
|
optional arguments:
|
|
|
|
-h, --help show this help message and exit
|
|
|
|
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
|
|
|
Show profits for only these pairs. Pairs are space-
|
|
|
|
separated.
|
|
|
|
--timerange TIMERANGE
|
|
|
|
Specify what timerange of data to use.
|
|
|
|
--export EXPORT Export backtest results, argument are: trades.
|
|
|
|
Example: `--export=trades`
|
|
|
|
--export-filename PATH
|
2019-12-22 09:16:49 +00:00
|
|
|
Save backtest results to the file with this filename.
|
|
|
|
Requires `--export` to be set as well. Example:
|
|
|
|
`--export-filename=user_data/backtest_results/backtest
|
|
|
|
_today.json`
|
2019-08-22 15:16:33 +00:00
|
|
|
--db-url PATH Override trades database URL, this is useful in custom
|
|
|
|
deployments (default: `sqlite:///tradesv3.sqlite` for
|
2019-12-22 09:16:49 +00:00
|
|
|
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
|
|
|
|
Dry Run).
|
2019-08-22 15:16:33 +00:00
|
|
|
--trade-source {DB,file}
|
|
|
|
Specify the source for trades (Can be DB or file
|
|
|
|
(backtest file)) Default: file
|
2019-09-29 17:18:02 +00:00
|
|
|
-i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
|
|
|
|
Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
|
|
|
|
`1d`).
|
|
|
|
|
|
|
|
Common arguments:
|
|
|
|
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
2019-12-22 09:16:49 +00:00
|
|
|
--logfile FILE Log to the file specified. Special values are:
|
|
|
|
'syslog', 'journald'. See the documentation for more
|
|
|
|
details.
|
2019-09-29 17:18:02 +00:00
|
|
|
-V, --version show program's version number and exit
|
|
|
|
-c PATH, --config PATH
|
|
|
|
Specify configuration file (default: `config.json`).
|
|
|
|
Multiple --config options may be used. Can be set to
|
|
|
|
`-` to read config from stdin.
|
|
|
|
-d PATH, --datadir PATH
|
|
|
|
Path to directory with historical backtesting data.
|
|
|
|
--userdir PATH, --user-data-dir PATH
|
|
|
|
Path to userdata directory.
|
2019-08-22 15:16:33 +00:00
|
|
|
|
2018-01-28 10:53:52 +00:00
|
|
|
```
|
2018-01-12 09:55:49 +00:00
|
|
|
|
2019-08-30 18:42:14 +00:00
|
|
|
The `-p/--pairs` argument, can be used to limit the pairs that are considered for this calculation.
|
2018-01-12 09:55:49 +00:00
|
|
|
|
2019-08-24 13:09:33 +00:00
|
|
|
Examples:
|
|
|
|
|
|
|
|
Use custom backtest-export file
|
|
|
|
|
|
|
|
``` bash
|
|
|
|
freqtrade plot-profit -p LTC/BTC --export-filename user_data/backtest_results/backtest-result-Strategy005.json
|
|
|
|
```
|
|
|
|
|
|
|
|
Use custom database
|
|
|
|
|
|
|
|
``` bash
|
|
|
|
freqtrade plot-profit -p LTC/BTC --db-url sqlite:///tradesv3.sqlite --trade-source DB
|
|
|
|
```
|
2019-05-27 17:42:12 +00:00
|
|
|
|
|
|
|
``` bash
|
2019-10-05 07:56:01 +00:00
|
|
|
freqtrade --datadir user_data/data/binance_save/ plot-profit -p LTC/BTC
|
2018-01-12 09:55:49 +00:00
|
|
|
```
|