stable/docs/bot-usage.md

250 lines
9.7 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-11-15 18:54:17 +00:00
The bot allows you to select which config file you want to use. Per
2018-01-02 02:17:10 +00:00
default, the bot will load the file `./config.json`
```bash
2018-11-15 18:54:17 +00:00
python3 ./freqtrade/main.py -c path/far/far/away/config.json
2018-01-02 02:17:10 +00:00
```
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
2018-11-15 18:54:17 +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
```
2018-11-15 18:54:17 +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-11-15 18:54:17 +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-11-15 18:54:17 +00:00
Per default `--dynamic-whitelist` will retrieve the 20 currencies based
2018-01-02 02:17:10 +00:00
on BaseVolume. This value can be changed when you run the script.
2018-11-15 18:54:17 +00:00
**By Default**
Get the 20 currencies based on BaseVolume.
2018-01-02 02:17:10 +00:00
```bash
python3 ./freqtrade/main.py --dynamic-whitelist
```
2018-11-15 18:54:17 +00:00
**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
```
2018-11-15 18:54:17 +00:00
**Exception**
2018-01-02 02:17:10 +00:00
`--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-11-15 18:54:17 +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-11-15 18:54:17 +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.
2018-01-02 02:17:10 +00:00
2018-11-15 18:54:17 +00:00
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.
2018-01-02 02:17:10 +00:00
**Use it only if you want to update your data set. You will not be able
to come back to the previous version.**
2018-11-15 18:54:17 +00:00
To test your strategy with latest data, we recommend continuing using
2018-01-02 02:17:10 +00:00
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-03-31 05:49:06 +00:00
--hyperopt PATH specify hyperopt file (default:
freqtrade/optimize/default_hyperopt.py)
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
```
2018-11-15 18:54:17 +00:00
## Edge commands
To know your trade expectacny and winrate against historical data, you can use Edge.
```
usage: main.py edge [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE] [-r]
[--stoplosses STOPLOSS_RANGE]
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)
--timerange TIMERANGE
specify what timerange of data to use.
-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 edge with up-to-date data.
--stoplosses STOPLOSS_RANGE
defines a range of stoploss against which edge will
assess the strategythe format is "min,max,step"
(without any space).example:
--stoplosses=-0.01,-0.1,-0.001
```
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
2018-11-15 18:54:17 +00:00
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).