stable/docs/plotting.md

184 lines
6.9 KiB
Markdown
Raw Normal View History

2018-01-12 10:49:50 +00:00
# Plotting
2019-05-27 17:42:12 +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
```
usage: freqtrade plot-dataframe [-h] [-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]
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.
--indicators1 INDICATORS1 [INDICATORS1 ...]
Set indicators from your strategy you want in the
first row of the graph. Space-separated list. Example:
`ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`.
--indicators2 INDICATORS2 [INDICATORS2 ...]
Set indicators from your strategy you want in the
third row of the graph. Space-separated list. Example:
`fastd fastk`. Default: `['macd', 'macdsignal']`.
--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://` for Dry Run).
--trade-source {DB,file}
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`
--export-filename PATH
Save backtest results to the file with this filename
(default: `user_data/backtest_results/backtest-
result.json`). Requires `--export` to be set as well.
Example: `--export-filename=user_data/backtest_results
/backtest_today.json`
--timerange TIMERANGE
Specify what timerange of data to use.
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.
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-08-24 13:09:33 +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
``` bash
2019-08-24 13:09:33 +00:00
freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH --indicators1 sma ema --indicators2 macd
```
2018-01-12 10:49:50 +00:00
2019-08-24 13:09:33 +00:00
### Further usage examples
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-08-24 13:09:33 +00:00
freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH XRP/ETH
```
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-08-24 13:09:33 +00:00
freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH --timerange=20180801-20180805
```
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-08-24 13:09:33 +00:00
freqtrade --strategy AwesomeStrategy plot-dataframe --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB
```
2019-05-27 17:42:12 +00:00
To plot trades from a backtesting result, use `--export-filename <filename>`
2019-05-27 17:42:12 +00:00
``` bash
2019-08-24 13:09:33 +00:00
freqtrade --strategy AwesomeStrategy plot-dataframe --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH
```
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
```
usage: freqtrade plot-profit [-h] [-p PAIRS [PAIRS ...]]
[--timerange TIMERANGE] [--export EXPORT]
[--export-filename PATH] [--db-url PATH]
[--trade-source {DB,file}]
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
Save backtest results to the file with this filename
(default: `user_data/backtest_results/backtest-
result.json`). Requires `--export` to be set as well.
Example: `--export-filename=user_data/backtest_results
/backtest_today.json`
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite://` for Dry Run).
--trade-source {DB,file}
Specify the source for trades (Can be DB or file
(backtest file)) Default: file
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
freqtrade plot-profit --datadir user_data/data/binance_save/ -p LTC/BTC
2018-01-12 09:55:49 +00:00
```