Remove Strategy fallback to default strategy (#490)
* Remove Strategy fallback to default strategy
This commit is contained in:
parent
0f041b424d
commit
d24cd89304
@ -32,7 +32,7 @@ optional arguments:
|
|||||||
--dry-run-db Force dry run to use a local DB
|
--dry-run-db Force dry run to use a local DB
|
||||||
"tradesv3.dry_run.sqlite" instead of memory DB. Work
|
"tradesv3.dry_run.sqlite" instead of memory DB. Work
|
||||||
only if dry_run is enabled.
|
only if dry_run is enabled.
|
||||||
-dd PATH, --datadir PATH
|
--datadir PATH
|
||||||
path to backtest data (default freqdata/tests/testdata
|
path to backtest data (default freqdata/tests/testdata
|
||||||
--dynamic-whitelist [INT]
|
--dynamic-whitelist [INT]
|
||||||
dynamically generate and update whitelist based on 24h
|
dynamically generate and update whitelist based on 24h
|
||||||
@ -65,8 +65,8 @@ load it:
|
|||||||
python3 ./freqtrade/main.py --strategy my_awesome_strategy
|
python3 ./freqtrade/main.py --strategy my_awesome_strategy
|
||||||
```
|
```
|
||||||
|
|
||||||
If the bot does not find your strategy file, it will fallback to the
|
If the bot does not find your strategy file, it will display in an error
|
||||||
`default_strategy`.
|
message the reason (File not found, or errors in your code).
|
||||||
|
|
||||||
Learn more about strategy file in [optimize your bot](https://github.com/gcarq/freqtrade/blob/develop/docs/bot-optimization.md).
|
Learn more about strategy file in [optimize your bot](https://github.com/gcarq/freqtrade/blob/develop/docs/bot-optimization.md).
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ def common_args_parser(description: str):
|
|||||||
'-s', '--strategy',
|
'-s', '--strategy',
|
||||||
help='specify strategy file (default: freqtrade/strategy/default_strategy.py)',
|
help='specify strategy file (default: freqtrade/strategy/default_strategy.py)',
|
||||||
dest='strategy',
|
dest='strategy',
|
||||||
default='.default_strategy',
|
default='default_strategy',
|
||||||
type=str,
|
type=str,
|
||||||
metavar='PATH',
|
metavar='PATH',
|
||||||
)
|
)
|
||||||
|
@ -95,8 +95,16 @@ class Strategy(object):
|
|||||||
self.custom_strategy = self._load_class(path + strategy_name)
|
self.custom_strategy = self._load_class(path + strategy_name)
|
||||||
|
|
||||||
# Fallback to the default strategy
|
# Fallback to the default strategy
|
||||||
except (ImportError, TypeError):
|
except (ImportError, TypeError) as error:
|
||||||
self.custom_strategy = self._load_class('.' + self.DEFAULT_STRATEGY)
|
self.logger.error(
|
||||||
|
"Impossible to load Strategy 'user_data/strategies/%s.py'. This file does not exist"
|
||||||
|
" or contains Python code errors",
|
||||||
|
strategy_name
|
||||||
|
)
|
||||||
|
self.logger.error(
|
||||||
|
"The error is:\n%s.",
|
||||||
|
error
|
||||||
|
)
|
||||||
|
|
||||||
def _load_class(self, filename: str) -> IStrategy:
|
def _load_class(self, filename: str) -> IStrategy:
|
||||||
"""
|
"""
|
||||||
|
@ -32,7 +32,7 @@ def test_load_strategy(result):
|
|||||||
strategy.logger = logging.getLogger(__name__)
|
strategy.logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
assert not hasattr(Strategy, 'custom_strategy')
|
assert not hasattr(Strategy, 'custom_strategy')
|
||||||
strategy._load_strategy('default_strategy')
|
strategy._load_strategy('test_strategy')
|
||||||
|
|
||||||
assert not hasattr(Strategy, 'custom_strategy')
|
assert not hasattr(Strategy, 'custom_strategy')
|
||||||
|
|
||||||
@ -40,6 +40,18 @@ def test_load_strategy(result):
|
|||||||
assert 'adx' in strategy.populate_indicators(result)
|
assert 'adx' in strategy.populate_indicators(result)
|
||||||
|
|
||||||
|
|
||||||
|
def test_load_not_found_strategy(caplog):
|
||||||
|
strategy = Strategy()
|
||||||
|
strategy.logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
assert not hasattr(Strategy, 'custom_strategy')
|
||||||
|
strategy._load_strategy('NotFoundStrategy')
|
||||||
|
|
||||||
|
error_msg = "Impossible to load Strategy 'user_data/strategies/{}.py'. This file does not " \
|
||||||
|
"exist or contains Python code errors".format('NotFoundStrategy')
|
||||||
|
assert ('test_strategy', logging.ERROR, error_msg) in caplog.record_tuples
|
||||||
|
|
||||||
|
|
||||||
def test_strategy(result):
|
def test_strategy(result):
|
||||||
strategy = Strategy()
|
strategy = Strategy()
|
||||||
strategy.init({'strategy': 'default_strategy'})
|
strategy.init({'strategy': 'default_strategy'})
|
||||||
|
Loading…
Reference in New Issue
Block a user