stable/docs/bot-usage.md

223 lines
8.5 KiB
Markdown
Raw Normal View History

2018-01-02 02:17:10 +00:00
# Bot usage
This page explains the difference parameters of the bot and how to run it.
2018-01-02 02:17:10 +00:00
## Table of Contents
2018-01-02 02:17:10 +00:00
- [Bot commands](#bot-commands)
- [Backtesting commands](#backtesting-commands)
- [Hyperopt commands](#hyperopt-commands)
## Bot commands
2018-01-02 02:17:10 +00:00
```
2018-06-07 03:36:39 +00:00
usage: freqtrade [-h] [-v] [--version] [-c PATH] [-d PATH] [-s NAME]
[--strategy-path PATH] [--dynamic-whitelist [INT]]
[--db-url PATH]
{backtesting,hyperopt} ...
2018-01-02 02:17:10 +00:00
Simple High Frequency Trading Bot for crypto currencies
positional arguments:
{backtesting,hyperopt}
backtesting backtesting module
hyperopt hyperopt module
optional arguments:
-h, --help show this help message and exit
-v, --verbose be verbose
--version show program's version number and exit
2018-01-18 07:06:37 +00:00
-c PATH, --config PATH
specify configuration file (default: config.json)
2018-05-30 05:24:13 +00:00
-d PATH, --datadir PATH
2018-06-07 03:36:39 +00:00
path to backtest data
-s NAME, --strategy NAME
specify strategy class name (default: DefaultStrategy)
2018-03-27 16:46:42 +00:00
--strategy-path PATH specify additional strategy lookup path
2018-01-02 02:17:10 +00:00
--dynamic-whitelist [INT]
dynamically generate and update whitelist based on 24h
2018-06-07 03:36:39 +00:00
BaseVolume (default: 20)
--db-url PATH Override trades database URL, this is useful if
dry_run is enabled or in custom deployments (default:
sqlite:///tradesv3.sqlite)
2018-01-02 02:17:10 +00:00
```
### How to use a different config file?
2018-01-02 02:17:10 +00:00
The bot allows you to select which config file you want to use. Per
default, the bot will load the file `./config.json`
```bash
python3 ./freqtrade/main.py -c path/far/far/away/config.json
```
2018-01-18 07:06:37 +00:00
### How to use --strategy?
This parameter will allow you to load your custom strategy class.
Per default without `--strategy` or `-s` the bot will load the
`DefaultStrategy` included with the bot (`freqtrade/strategy/default_strategy.py`).
2018-01-18 07:06:37 +00:00
The bot will search your strategy file within `user_data/strategies` and `freqtrade/strategy`.
2018-01-18 07:06:37 +00:00
To load a strategy, simply pass the class name (e.g.: `CustomStrategy`) in this parameter.
2018-01-18 07:06:37 +00:00
**Example:**
In `user_data/strategies` you have a file `my_awesome_strategy.py` which has
2018-03-25 14:42:20 +00:00
a strategy class called `AwesomeStrategy` to load it:
2018-01-18 07:06:37 +00:00
```bash
python3 ./freqtrade/main.py --strategy AwesomeStrategy
2018-01-18 07:06:37 +00:00
```
If the bot does not find your strategy file, it will display in an error
message the reason (File not found, or errors in your code).
2018-01-18 07:06:37 +00:00
Learn more about strategy file in [optimize your bot](https://github.com/freqtrade/freqtrade/blob/develop/docs/bot-optimization.md).
2018-01-18 07:06:37 +00:00
2018-03-27 16:46:42 +00:00
### How to use --strategy-path?
2018-03-27 16:46:42 +00:00
This parameter allows you to add an additional strategy lookup path, which gets
checked before the default locations (The passed path must be a folder!):
```bash
python3 ./freqtrade/main.py --strategy AwesomeStrategy --strategy-path /some/folder
```
2018-01-18 07:06:37 +00:00
#### How to install a strategy?
2018-01-18 07:06:37 +00:00
This is very simple. Copy paste your strategy file into the folder
2018-03-27 16:46:42 +00:00
`user_data/strategies` or use `--strategy-path`. And voila, the bot is ready to use it.
2018-01-18 07:06:37 +00:00
2018-01-02 02:17:10 +00:00
### How to use --dynamic-whitelist?
2018-01-02 02:17:10 +00:00
Per default `--dynamic-whitelist` will retrieve the 20 currencies based
on BaseVolume. This value can be changed when you run the script.
**By Default**
Get the 20 currencies based on BaseVolume.
2018-01-02 02:17:10 +00:00
```bash
python3 ./freqtrade/main.py --dynamic-whitelist
```
**Customize the number of currencies to retrieve**
Get the 30 currencies based on BaseVolume.
2018-01-02 02:17:10 +00:00
```bash
python3 ./freqtrade/main.py --dynamic-whitelist 30
```
**Exception**
`--dynamic-whitelist` must be greater than 0. If you enter 0 or a
negative value (e.g -2), `--dynamic-whitelist` will use the default
value (20).
2018-06-07 03:36:39 +00:00
### How to use --db-url?
2018-01-02 02:17:10 +00:00
When you run the bot in Dry-run mode, per default no transactions are
stored in a database. If you want to store your bot actions in a DB
2018-06-07 03:36:39 +00:00
using `--db-url`. This can also be used to specify a custom database
in production mode. Example command:
2018-01-02 02:17:10 +00:00
```bash
2018-06-07 03:36:39 +00:00
python3 ./freqtrade/main.py -c config.json --db-url sqlite:///tradesv3.dry_run.sqlite
2018-01-02 02:17:10 +00:00
```
## Backtesting commands
Backtesting also uses the config specified via `-c/--config`.
```
usage: freqtrade backtesting [-h] [-i TICKER_INTERVAL] [--eps] [--dmmp]
2018-07-17 19:05:31 +00:00
[--timerange TIMERANGE] [-l] [-r]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
2018-07-17 19:05:31 +00:00
[--export EXPORT] [--export-filename PATH]
2018-01-02 02:17:10 +00:00
optional arguments:
-h, --help show this help message and exit
-i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
specify ticker interval (1m, 5m, 30m, 1h, 1d)
2018-07-19 11:20:15 +00:00
--eps, --enable-position-stacking
Allow buying the same pair multiple times (position
stacking)
--dmmp, --disable-max-market-positions
2018-07-17 19:05:31 +00:00
Disable applying `max_open_trades` during backtest
(same as setting `max_open_trades` to a very high
number)
--timerange TIMERANGE
specify what timerange of data to use.
-l, --live using live data
2018-01-02 02:17:10 +00:00
-r, --refresh-pairs-cached
refresh the pairs files in tests/testdata with the
latest data from the exchange. Use it if you want to
run your backtesting with up-to-date data.
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
Provide a commaseparated list of strategies to
backtest Please note that ticker-interval needs to be
set either in config or via command line. When using
this together with --export trades, the strategy-name
is injected into the filename (so backtest-data.json
becomes backtest-data-DefaultStrategy.json
--export EXPORT export backtest results, argument are: trades Example
--export=trades
2018-07-17 19:05:31 +00:00
--export-filename PATH
Save backtest results to this filename requires
--export to be set as well Example --export-
2018-07-17 19:05:31 +00:00
filename=user_data/backtest_data/backtest_today.json
(default: user_data/backtest_data/backtest-
result.json)
2018-01-02 02:17:10 +00:00
```
### How to use --refresh-pairs-cached parameter?
2018-01-02 02:17:10 +00:00
The first time your run Backtesting, it will take the pairs you have
set in your config file and download data from Bittrex.
If for any reason you want to update your data set, you use
`--refresh-pairs-cached` to force Backtesting to update the data it has.
**Use it only if you want to update your data set. You will not be able
to come back to the previous version.**
To test your strategy with latest data, we recommend continuing using
the parameter `-l` or `--live`.
## Hyperopt commands
2018-06-15 07:45:19 +00:00
To optimize your strategy, you can use hyperopt parameter hyperoptimization
to find optimal parameter values for your stategy.
2018-01-02 02:17:10 +00:00
```
2018-07-19 11:20:15 +00:00
usage: freqtrade hyperopt [-h] [-i TICKER_INTERVAL] [--eps] [--dmmp]
2018-07-17 19:05:31 +00:00
[--timerange TIMERANGE] [-e INT]
[-s {all,buy,roi,stoploss} [{all,buy,roi,stoploss} ...]]
2018-01-02 02:17:10 +00:00
optional arguments:
-h, --help show this help message and exit
-i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
specify ticker interval (1m, 5m, 30m, 1h, 1d)
2018-07-19 11:20:15 +00:00
--eps, --enable-position-stacking
Allow buying the same pair multiple times (position
stacking)
--dmmp, --disable-max-market-positions
2018-07-17 19:05:31 +00:00
Disable applying `max_open_trades` during backtest
(same as setting `max_open_trades` to a very high
number)
--timerange TIMERANGE
specify what timerange of data to use.
2018-01-02 02:17:10 +00:00
-e INT, --epochs INT specify number of epochs (default: 100)
-s {all,buy,roi,stoploss} [{all,buy,roi,stoploss} ...], --spaces {all,buy,roi,stoploss} [{all,buy,roi,stoploss} ...]
Specify which parameters to hyperopt. Space separate
list. Default: all
2018-07-17 19:05:31 +00:00
2018-01-02 02:17:10 +00:00
```
## A parameter missing in the configuration?
2018-01-02 02:17:10 +00:00
All parameters for `main.py`, `backtesting`, `hyperopt` are referenced
in [misc.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/misc.py#L84)
2018-01-02 02:17:10 +00:00
## Next step
The optimal strategy of the bot will change with time depending of the market trends. The next step is to
[optimize your bot](https://github.com/freqtrade/freqtrade/blob/develop/docs/bot-optimization.md).