don't use __annotate__
it is only present when typehints are used which cannot be guaranteed for userdefined classes
This commit is contained in:
parent
f286ba6b87
commit
39cf0decce
@ -58,6 +58,9 @@ class IStrategy(ABC):
|
||||
ticker_interval -> str: value of the ticker interval to use for the strategy
|
||||
"""
|
||||
|
||||
_populate_fun_len: int = 0
|
||||
_buy_fun_len: int = 0
|
||||
_sell_fun_len: int = 0
|
||||
# associated minimal roi
|
||||
minimal_roi: Dict
|
||||
|
||||
@ -283,7 +286,7 @@ class IStrategy(ABC):
|
||||
:param pair: The currently traded pair
|
||||
:return: a Dataframe with all mandatory indicators for the strategies
|
||||
"""
|
||||
if len(self.populate_indicators.__annotations__) == 2:
|
||||
if self._populate_fun_len == 2:
|
||||
warnings.warn("deprecated - check out the Sample strategy to see "
|
||||
"the current function headers!", DeprecationWarning)
|
||||
return self.populate_indicators(dataframe) # type: ignore
|
||||
@ -298,7 +301,7 @@ class IStrategy(ABC):
|
||||
:param pair: The currently traded pair
|
||||
:return: DataFrame with buy column
|
||||
"""
|
||||
if len(self.populate_buy_trend.__annotations__) == 2:
|
||||
if self._buy_fun_len == 2:
|
||||
warnings.warn("deprecated - check out the Sample strategy to see "
|
||||
"the current function headers!", DeprecationWarning)
|
||||
return self.populate_buy_trend(dataframe) # type: ignore
|
||||
@ -313,7 +316,7 @@ class IStrategy(ABC):
|
||||
:param pair: The currently traded pair
|
||||
:return: DataFrame with sell column
|
||||
"""
|
||||
if len(self.populate_sell_trend.__annotations__) == 2:
|
||||
if self._sell_fun_len == 2:
|
||||
warnings.warn("deprecated - check out the Sample strategy to see "
|
||||
"the current function headers!", DeprecationWarning)
|
||||
return self.populate_sell_trend(dataframe) # type: ignore
|
||||
|
@ -92,6 +92,13 @@ class StrategyResolver(object):
|
||||
strategy = self._search_strategy(path, strategy_name=strategy_name, config=config)
|
||||
if strategy:
|
||||
logger.info('Using resolved strategy %s from \'%s\'', strategy_name, path)
|
||||
strategy._populate_fun_len = len(
|
||||
inspect.getfullargspec(strategy.populate_indicators).args)
|
||||
strategy._buy_fun_len = len(
|
||||
inspect.getfullargspec(strategy.populate_buy_trend).args)
|
||||
strategy._sell_fun_len = len(
|
||||
inspect.getfullargspec(strategy.populate_sell_trend).args)
|
||||
|
||||
return import_strategy(strategy, config=config)
|
||||
except FileNotFoundError:
|
||||
logger.warning('Path "%s" does not exist', path)
|
||||
|
@ -199,15 +199,9 @@ def test_call_deprecated_function(result, monkeypatch):
|
||||
pair = 'ETH/BTC'
|
||||
|
||||
# Make sure we are using a legacy function
|
||||
assert len(resolver.strategy.populate_indicators.__annotations__) == 2
|
||||
assert 'dataframe' in resolver.strategy.populate_indicators.__annotations__
|
||||
assert 'pair' not in resolver.strategy.populate_indicators.__annotations__
|
||||
assert len(resolver.strategy.populate_buy_trend.__annotations__) == 2
|
||||
assert 'dataframe' in resolver.strategy.populate_buy_trend.__annotations__
|
||||
assert 'pair' not in resolver.strategy.populate_buy_trend.__annotations__
|
||||
assert len(resolver.strategy.populate_sell_trend.__annotations__) == 2
|
||||
assert 'dataframe' in resolver.strategy.populate_sell_trend.__annotations__
|
||||
assert 'pair' not in resolver.strategy.populate_sell_trend.__annotations__
|
||||
assert resolver.strategy._populate_fun_len == 2
|
||||
assert resolver.strategy._buy_fun_len == 2
|
||||
assert resolver.strategy._sell_fun_len == 2
|
||||
|
||||
indicator_df = resolver.strategy.advise_indicators(result, pair=pair)
|
||||
assert type(indicator_df) is DataFrame
|
||||
|
Loading…
Reference in New Issue
Block a user