Create strategy_wrapper to call user-defined code with
This commit is contained in:
29
freqtrade/strategy/strategy_wrapper.py
Normal file
29
freqtrade/strategy/strategy_wrapper.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import logging
|
||||
|
||||
from freqtrade.exceptions import StrategyError
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def strategy_safe_wrapper(f, message: str, default_retval=None):
|
||||
def wrapper(*args, **kwargs):
|
||||
try:
|
||||
return f(*args, **kwargs)
|
||||
except ValueError as error:
|
||||
logger.warning(
|
||||
f"{message}"
|
||||
f"Strategy caused the following exception: {error}"
|
||||
f"{f}"
|
||||
)
|
||||
if not default_retval:
|
||||
raise StrategyError(str(error)) from error
|
||||
return default_retval
|
||||
except Exception as error:
|
||||
logger.exception(
|
||||
f"Unexpected error {error} calling {f}"
|
||||
)
|
||||
if not default_retval:
|
||||
raise StrategyError(str(error)) from error
|
||||
return default_retval
|
||||
|
||||
return wrapper
|
||||
Reference in New Issue
Block a user