Update hyperopt documentation with sell-stuff
This commit is contained in:
parent
68ba1e1f37
commit
5e08769366
@ -11,30 +11,29 @@ and still take a long time.
|
|||||||
|
|
||||||
## Prepare Hyperopting
|
## Prepare Hyperopting
|
||||||
|
|
||||||
Before we start digging in Hyperopt, we recommend you to take a look at
|
Before we start digging into Hyperopt, we recommend you to take a look at
|
||||||
an example hyperopt file located into [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/test_hyperopt.py)
|
an example hyperopt file located into [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/test_hyperopt.py)
|
||||||
|
|
||||||
### 1. Install a Custom Hyperopt File
|
Configuring hyperopt is similar to writing your own strategy, and many tasks will be similar and a lot of code can be copied across from the strategy.
|
||||||
This is very simple. Put your hyperopt file into the folder
|
|
||||||
`user_data/hyperopts`.
|
|
||||||
|
|
||||||
Let assume you want a hyperopt file `awesome_hyperopt.py`:<br/>
|
### 1. Install a Custom Hyperopt File
|
||||||
|
|
||||||
|
Put your hyperopt file into the folder`user_data/hyperopts`.
|
||||||
|
|
||||||
|
Let assume you want a hyperopt file `awesome_hyperopt.py`:
|
||||||
Copy the file `user_data/hyperopts/sample_hyperopt.py` into `user_data/hyperopts/awesome_hyperopt.py`
|
Copy the file `user_data/hyperopts/sample_hyperopt.py` into `user_data/hyperopts/awesome_hyperopt.py`
|
||||||
|
|
||||||
|
|
||||||
### 2. Configure your Guards and Triggers
|
### 2. Configure your Guards and Triggers
|
||||||
There are two places you need to change in your hyperopt file to add a
|
|
||||||
new buy hyperopt for testing:
|
There are two places you need to change in your hyperopt file to add a new buy hyperopt for testing:
|
||||||
- Inside [populate_buy_trend()](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/test_hyperopt.py#L230-L251).
|
|
||||||
- Inside [indicator_space()](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/test_hyperopt.py#L207-L223).
|
- Inside `indicator_space()` - the parameters hyperopt shall be optimizing.
|
||||||
|
- Inside `populate_buy_trend()` - applying the parameters.
|
||||||
|
|
||||||
There you have two different types of indicators: 1. `guards` and 2. `triggers`.
|
There you have two different types of indicators: 1. `guards` and 2. `triggers`.
|
||||||
|
|
||||||
1. Guards are conditions like "never buy if ADX < 10", or never buy if
|
1. Guards are conditions like "never buy if ADX < 10", or never buy if current price is over EMA10.
|
||||||
current price is over EMA10.
|
2. Triggers are ones that actually trigger buy in specific moment, like "buy when EMA5 crosses over EMA10" or "buy when close price touches lower bollinger band".
|
||||||
2. Triggers are ones that actually trigger buy in specific moment, like
|
|
||||||
"buy when EMA5 crosses over EMA10" or "buy when close price touches lower
|
|
||||||
bollinger band".
|
|
||||||
|
|
||||||
Hyperoptimization will, for each eval round, pick one trigger and possibly
|
Hyperoptimization will, for each eval round, pick one trigger and possibly
|
||||||
multiple guards. The constructed strategy will be something like
|
multiple guards. The constructed strategy will be something like
|
||||||
@ -45,6 +44,17 @@ If you have updated the buy strategy, ie. changed the contents of
|
|||||||
`populate_buy_trend()` method you have to update the `guards` and
|
`populate_buy_trend()` method you have to update the `guards` and
|
||||||
`triggers` hyperopts must use.
|
`triggers` hyperopts must use.
|
||||||
|
|
||||||
|
#### Sell optimization
|
||||||
|
|
||||||
|
Similar to the buy-signal above, sell-signals can also be optimized.
|
||||||
|
Place the corresponding settings into the following methods
|
||||||
|
|
||||||
|
- Inside `sell_indicator_space()` - the parameters hyperopt shall be optimizing.
|
||||||
|
- Inside `populate_sell_trend()` - applying the parameters.
|
||||||
|
|
||||||
|
The configuration and rules are the same than for buy signals.
|
||||||
|
To avoid naming collisions in the search-space, please prefix all sell-spaces with sell-.
|
||||||
|
|
||||||
## Solving a Mystery
|
## Solving a Mystery
|
||||||
|
|
||||||
Let's say you are curious: should you use MACD crossings or lower Bollinger
|
Let's say you are curious: should you use MACD crossings or lower Bollinger
|
||||||
@ -125,11 +135,10 @@ Because hyperopt tries a lot of combinations to find the best parameters it will
|
|||||||
We strongly recommend to use `screen` or `tmux` to prevent any connection loss.
|
We strongly recommend to use `screen` or `tmux` to prevent any connection loss.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 ./freqtrade/main.py -s <strategyname> --hyperopt <hyperoptname> -c config.json hyperopt -e 5000
|
python3 ./freqtrade/main.py --hyperopt <hyperoptname> -c config.json hyperopt -e 5000
|
||||||
```
|
```
|
||||||
|
|
||||||
Use `<strategyname>` and `<hyperoptname>` as the names of the custom strategy
|
Use `<hyperoptname>` as the name of the custom hyperopt used.
|
||||||
(only required for generating sells) and the custom hyperopt used.
|
|
||||||
|
|
||||||
The `-e` flag will set how many evaluations hyperopt will do. We recommend
|
The `-e` flag will set how many evaluations hyperopt will do. We recommend
|
||||||
running at least several thousand evaluations.
|
running at least several thousand evaluations.
|
||||||
@ -162,6 +171,7 @@ Legal values are:
|
|||||||
|
|
||||||
- `all`: optimize everything
|
- `all`: optimize everything
|
||||||
- `buy`: just search for a new buy strategy
|
- `buy`: just search for a new buy strategy
|
||||||
|
- `sell`: just search for a new sell strategy
|
||||||
- `roi`: just optimize the minimal profit table for your strategy
|
- `roi`: just optimize the minimal profit table for your strategy
|
||||||
- `stoploss`: search for the best stoploss value
|
- `stoploss`: search for the best stoploss value
|
||||||
- space-separated list of any of the above values for example `--spaces roi stoploss`
|
- space-separated list of any of the above values for example `--spaces roi stoploss`
|
||||||
@ -237,6 +247,7 @@ Once the optimized strategy has been implemented into your strategy, you should
|
|||||||
To archive the same results (number of trades, ...) than during hyperopt, please use the command line flag `--disable-max-market-positions`.
|
To archive the same results (number of trades, ...) than during hyperopt, please use the command line flag `--disable-max-market-positions`.
|
||||||
This setting is the default for hyperopt for speed reasons. You can overwrite this in the configuration by setting `"position_stacking"=false` or by changing the relevant line in your hyperopt file [here](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/optimize/hyperopt.py#L283).
|
This setting is the default for hyperopt for speed reasons. You can overwrite this in the configuration by setting `"position_stacking"=false` or by changing the relevant line in your hyperopt file [here](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/optimize/hyperopt.py#L283).
|
||||||
|
|
||||||
|
!!! Note:
|
||||||
Dry/live runs will **NOT** use position stacking - therefore it does make sense to also validate the strategy without this as it's closer to reality.
|
Dry/live runs will **NOT** use position stacking - therefore it does make sense to also validate the strategy without this as it's closer to reality.
|
||||||
|
|
||||||
## Next Step
|
## Next Step
|
||||||
|
Loading…
Reference in New Issue
Block a user