Merge pull request #1819 from hroff-1902/hyperopt-min-trades
hyperopt --min-trades parameter
This commit is contained in:
commit
7e96d57627
@ -325,6 +325,15 @@ class Arguments(object):
|
||||
type=Arguments.check_int_positive,
|
||||
metavar='INT',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--min-trades',
|
||||
help="Set minimal desired number of trades for evaluations in the hyperopt "
|
||||
"optimization path (default: 1).",
|
||||
dest='hyperopt_min_trades',
|
||||
default=1,
|
||||
type=Arguments.check_int_positive,
|
||||
metavar='INT',
|
||||
)
|
||||
|
||||
def _build_subcommands(self) -> None:
|
||||
"""
|
||||
|
@ -312,6 +312,10 @@ class Configuration(object):
|
||||
|
||||
self._args_to_config(config, argname='hyperopt_random_state',
|
||||
logstring='Parameter --random-state detected: {}')
|
||||
|
||||
self._args_to_config(config, argname='hyperopt_min_trades',
|
||||
logstring='Parameter --min-trades detected: {}')
|
||||
|
||||
return config
|
||||
|
||||
def _validate_config_schema(self, conf: Dict[str, Any]) -> Dict[str, Any]:
|
||||
|
@ -204,7 +204,11 @@ class Hyperopt(Backtesting):
|
||||
trade_count = len(results.index)
|
||||
trade_duration = results.trade_duration.mean()
|
||||
|
||||
if trade_count == 0:
|
||||
# If this evaluation contains too short small amount of trades
|
||||
# to be interesting -- consider it as 'bad' (assign max. loss value)
|
||||
# in order to cast this hyperspace point away from optimization
|
||||
# path. We do not want to optimize 'hodl' strategies.
|
||||
if trade_count < self.config['hyperopt_min_trades']:
|
||||
return {
|
||||
'loss': MAX_LOSS,
|
||||
'params': params,
|
||||
|
@ -410,6 +410,7 @@ def test_generate_optimizer(mocker, default_conf) -> None:
|
||||
default_conf.update({'config': 'config.json.example'})
|
||||
default_conf.update({'timerange': None})
|
||||
default_conf.update({'spaces': 'all'})
|
||||
default_conf.update({'hyperopt_min_trades': 1})
|
||||
|
||||
trades = [
|
||||
('POWR/BTC', 0.023117, 0.000233, 100)
|
||||
|
Loading…
Reference in New Issue
Block a user