2018-12-30 16:08:21 +00:00
|
|
|
# Start the bot
|
2018-07-29 07:51:45 +00:00
|
|
|
|
2018-12-30 16:08:21 +00:00
|
|
|
This page explains the different parameters of the bot and how to run it.
|
2018-01-02 02:17:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
## Bot commands
|
2018-07-29 07:51:45 +00:00
|
|
|
|
2018-01-02 02:17:10 +00:00
|
|
|
```
|
2018-12-30 16:08:21 +00:00
|
|
|
usage: main.py [-h] [-v] [--version] [-c PATH] [-d PATH] [-s NAME]
|
|
|
|
[--strategy-path PATH] [--customhyperopt NAME]
|
|
|
|
[--dynamic-whitelist [INT]] [--db-url PATH]
|
|
|
|
{backtesting,edge,hyperopt} ...
|
2018-01-02 02:17:10 +00:00
|
|
|
|
2019-01-03 13:38:38 +00:00
|
|
|
Free, open source crypto trading bot
|
2018-01-02 02:17:10 +00:00
|
|
|
|
|
|
|
positional arguments:
|
2018-12-30 16:08:21 +00:00
|
|
|
{backtesting,edge,hyperopt}
|
2018-01-02 02:17:10 +00:00
|
|
|
backtesting backtesting module
|
2018-12-30 16:08:21 +00:00
|
|
|
edge edge module
|
2018-01-02 02:17:10 +00:00
|
|
|
hyperopt hyperopt module
|
|
|
|
|
|
|
|
optional arguments:
|
|
|
|
-h, --help show this help message and exit
|
2018-12-30 16:08:21 +00:00
|
|
|
-v, --verbose verbose mode (-vv for more, -vvv to get all messages)
|
|
|
|
--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
|
2018-03-25 14:39:31 +00:00
|
|
|
-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-12-30 16:08:21 +00:00
|
|
|
--customhyperopt NAME
|
|
|
|
specify hyperopt class name (default:
|
|
|
|
DefaultHyperOpts)
|
2018-01-02 02:17:10 +00:00
|
|
|
--dynamic-whitelist [INT]
|
|
|
|
dynamically generate and update whitelist based on 24h
|
2018-12-30 16:08:21 +00:00
|
|
|
BaseVolume (default: 20) DEPRECATED.
|
2018-06-07 03:36:39 +00:00
|
|
|
--db-url PATH Override trades database URL, this is useful if
|
|
|
|
dry_run is enabled or in custom deployments (default:
|
2018-12-30 16:08:21 +00:00
|
|
|
None)
|
2018-01-02 02:17:10 +00:00
|
|
|
```
|
|
|
|
|
2019-03-04 08:05:12 +00:00
|
|
|
### How to use a different configuration file?
|
2018-07-29 07:51:45 +00:00
|
|
|
|
2019-03-04 08:05:12 +00:00
|
|
|
The bot allows you to select which configuration 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
|
|
|
```
|
|
|
|
|
2019-03-04 08:05:12 +00:00
|
|
|
### How to use multiple configuration files?
|
|
|
|
|
|
|
|
The bot allows you to use multiple configuration files by specifying multiple
|
|
|
|
`-c/--config` configuration options in the command line. Configuration parameters
|
|
|
|
defined in the last configuration file override parameters with the same name
|
|
|
|
defined in the previous configuration file specified in the command line.
|
|
|
|
|
|
|
|
For example, you can make a separate configuration file with your key and secrete
|
|
|
|
for the Exchange you use for trading, specify default configuration file with
|
|
|
|
empty key and secrete values while running in the Dry Mode (which does not actually
|
|
|
|
require them):
|
|
|
|
|
|
|
|
```bash
|
|
|
|
python3 ./freqtrade/main.py -c ./config.json
|
|
|
|
```
|
|
|
|
|
|
|
|
and specify both configuration files when running in the normal Live Trade Mode:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
python3 ./freqtrade/main.py -c ./config.json -c path/to/secrets/keys.config.json
|
|
|
|
```
|
|
|
|
|
|
|
|
This could help you hide your private Exchange key and Exchange secrete on you local machine
|
|
|
|
by setting appropriate file permissions for the file which contains actual secrets and, additionally,
|
|
|
|
prevent unintended disclosure of sensitive private data when you publish examples
|
|
|
|
of your configuration in the project issues or in the Internet.
|
|
|
|
|
|
|
|
See more details on this technique with examples in the documentation page on
|
|
|
|
[configuration](https://github.com/freqtrade/freqtrade/blob/develop/docs/bot-configuration.md).
|
|
|
|
|
2018-12-30 16:08:21 +00:00
|
|
|
### How to use **--strategy**?
|
2018-07-29 07:51:45 +00:00
|
|
|
|
2018-03-25 14:39:31 +00:00
|
|
|
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
|
|
|
|
2018-03-25 14:39:31 +00:00
|
|
|
The bot will search your strategy file within `user_data/strategies` and `freqtrade/strategy`.
|
2018-01-18 07:06:37 +00:00
|
|
|
|
2018-03-25 14:39:31 +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:**
|
2018-03-25 14:39:31 +00:00
|
|
|
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-07-29 07:51:45 +00:00
|
|
|
|
2018-01-18 07:06:37 +00:00
|
|
|
```bash
|
2018-03-25 14:39:31 +00:00
|
|
|
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
|
2018-03-03 01:18:34 +00:00
|
|
|
message the reason (File not found, or errors in your code).
|
2018-01-18 07:06:37 +00:00
|
|
|
|
2018-06-03 21:07:00 +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-12-30 16:08:21 +00:00
|
|
|
### How to use **--strategy-path**?
|
2018-07-29 07:51:45 +00:00
|
|
|
|
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-07-29 07:51:45 +00:00
|
|
|
|
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-12-30 16:08:21 +00:00
|
|
|
### How to use **--dynamic-whitelist**?
|
2018-07-29 07:51:45 +00:00
|
|
|
|
2018-12-30 16:08:21 +00:00
|
|
|
!!! danger "DEPRECATED"
|
2018-12-31 10:04:22 +00:00
|
|
|
Dynamic-whitelist is deprecated. Please move your configurations to the configuration as outlined [here](/configuration/#dynamic-pairlists)
|
2018-12-04 19:24:52 +00:00
|
|
|
|
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-07-29 07:51:45 +00:00
|
|
|
|
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-07-29 07:51:45 +00:00
|
|
|
|
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-12-30 16:08:21 +00:00
|
|
|
### How to use **--db-url**?
|
2018-07-29 07:51:45 +00:00
|
|
|
|
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`.
|
|
|
|
|
|
|
|
```
|
2018-12-30 16:08:21 +00:00
|
|
|
usage: main.py backtesting [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE]
|
|
|
|
[--eps] [--dmmp] [-l] [-r]
|
|
|
|
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
|
|
|
|
[--export EXPORT] [--export-filename PATH]
|
2018-01-02 02:17:10 +00:00
|
|
|
|
|
|
|
optional arguments:
|
|
|
|
-h, --help show this help message and exit
|
2018-06-03 15:36:01 +00:00
|
|
|
-i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
|
|
|
|
specify ticker interval (1m, 5m, 30m, 1h, 1d)
|
2018-12-30 16:08:21 +00:00
|
|
|
--timerange TIMERANGE
|
|
|
|
specify what timerange of data to use.
|
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)
|
2018-06-03 15:36:01 +00:00
|
|
|
-l, --live using live data
|
2018-01-02 02:17:10 +00:00
|
|
|
-r, --refresh-pairs-cached
|
2018-06-03 15:36:01 +00:00
|
|
|
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.
|
2018-07-29 07:51:45 +00:00
|
|
|
--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
|
2018-06-03 15:36:01 +00:00
|
|
|
--export EXPORT export backtest results, argument are: trades Example
|
|
|
|
--export=trades
|
2018-07-17 19:05:31 +00:00
|
|
|
--export-filename PATH
|
2018-06-03 17:41:34 +00:00
|
|
|
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
|
|
|
```
|
|
|
|
|
2018-12-30 16:08:21 +00:00
|
|
|
### How to use **--refresh-pairs-cached** parameter?
|
2018-07-29 07:51:45 +00:00
|
|
|
|
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-12-30 16:08:21 +00:00
|
|
|
|
|
|
|
!!! Note
|
|
|
|
Use it only if you want to update your data set. You will not be able to come back to the previous version.
|
2018-01-02 02:17:10 +00:00
|
|
|
|
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
|
2018-06-03 15:36:01 +00:00
|
|
|
-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)
|
2018-06-03 15:36:01 +00:00
|
|
|
-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-12-12 19:20:07 +00:00
|
|
|
To understand edge and how to read the results, please read the [edge documentation](edge.md).
|
|
|
|
|
2018-01-02 02:17:10 +00:00
|
|
|
## A parameter missing in the configuration?
|
2018-07-29 07:51:45 +00:00
|
|
|
|
2018-01-02 02:17:10 +00:00
|
|
|
All parameters for `main.py`, `backtesting`, `hyperopt` are referenced
|
2018-06-03 21:07:00 +00:00
|
|
|
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-07-29 07:51:45 +00:00
|
|
|
|
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
|
2018-12-31 09:49:14 +00:00
|
|
|
[optimize your bot](bot-optimization.md).
|