Closed fridary closed 2 years ago
Moreover, if I add
buy_params
to strategy class and makehyperopt
again with the same--random-state 45735
, it will print another results.
This is (kindof) expected - having buy_params does not mean the parameters won't be optimized. This is being controlled by the --space
flag - or by the optimize
flag on each parameter.
In general, it'll not be necessary to add buy_params to the strategy itself. Hyperopt (or hyperopt-show) will write a parameter file (strategyfilename.json) - which is placed alongside the strategy - and loaded from there.
Now the backtesting logs indicate that this file is not found - which suggests some sort of interaction from your side (?)
Aside from that - the "same random-state" makes me suspicious.
if you run backtesting multiple times (no modification) - is the result identical, or different each time?
I've seen something similar before (random signals for every call) - and the reason then was an edge-case in a ta-lib indicator, which was called with an unexpected value - causing the calculation to crash (in that case it was MACD - but i assume the same can happen with every other value/indicator, too).
..sec
After looking at your code a bit more, i realized that your populate_indicator()
function is wrong.
using .value
in populate_indicators()
is wrong. populate_indicators is called exactly once before running hyperopt - so
.value` will never be different.
This is a supported approach though - but requires a different syntax / approach.
You can find details and an example for this in this section of the documentation.
What this does then is that (for example) ta.KAMA(dataframe['close'], self.buy_kama.value)
is called with the initial value.
while the value itself changes afterwards - it's never recaluclated (remember, populate_indicators()
is only called once) - so your values between hyperopt and backtesting differs - because inputs wre different
My bad, sorry, I found it's already and you got ahead of me to text. Thank you anyway very much.
I noticed weird thing my hyperopt results differ from backtest, the same I see on older versions.
python -m freqtrade download-data -c 'config.json' -t 5m --days 100 -p SOL/USDT
Now, I add
buy_params
to strategy:I got this:
Any ideas what's wrong? Moreover, if I add
buy_params
to strategy class and makehyperopt
again with the same--random-state 45735
, it will print another results.