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
|
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
|
# associated minimal roi
|
||||||
minimal_roi: Dict
|
minimal_roi: Dict
|
||||||
|
|
||||||
@ -283,7 +286,7 @@ class IStrategy(ABC):
|
|||||||
:param pair: The currently traded pair
|
:param pair: The currently traded pair
|
||||||
:return: a Dataframe with all mandatory indicators for the strategies
|
: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 "
|
warnings.warn("deprecated - check out the Sample strategy to see "
|
||||||
"the current function headers!", DeprecationWarning)
|
"the current function headers!", DeprecationWarning)
|
||||||
return self.populate_indicators(dataframe) # type: ignore
|
return self.populate_indicators(dataframe) # type: ignore
|
||||||
@ -298,7 +301,7 @@ class IStrategy(ABC):
|
|||||||
:param pair: The currently traded pair
|
:param pair: The currently traded pair
|
||||||
:return: DataFrame with buy column
|
: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 "
|
warnings.warn("deprecated - check out the Sample strategy to see "
|
||||||
"the current function headers!", DeprecationWarning)
|
"the current function headers!", DeprecationWarning)
|
||||||
return self.populate_buy_trend(dataframe) # type: ignore
|
return self.populate_buy_trend(dataframe) # type: ignore
|
||||||
@ -313,7 +316,7 @@ class IStrategy(ABC):
|
|||||||
:param pair: The currently traded pair
|
:param pair: The currently traded pair
|
||||||
:return: DataFrame with sell column
|
: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 "
|
warnings.warn("deprecated - check out the Sample strategy to see "
|
||||||
"the current function headers!", DeprecationWarning)
|
"the current function headers!", DeprecationWarning)
|
||||||
return self.populate_sell_trend(dataframe) # type: ignore
|
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)
|
strategy = self._search_strategy(path, strategy_name=strategy_name, config=config)
|
||||||
if strategy:
|
if strategy:
|
||||||
logger.info('Using resolved strategy %s from \'%s\'', strategy_name, path)
|
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)
|
return import_strategy(strategy, config=config)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
logger.warning('Path "%s" does not exist', path)
|
logger.warning('Path "%s" does not exist', path)
|
||||||
|
@ -199,15 +199,9 @@ def test_call_deprecated_function(result, monkeypatch):
|
|||||||
pair = 'ETH/BTC'
|
pair = 'ETH/BTC'
|
||||||
|
|
||||||
# Make sure we are using a legacy function
|
# Make sure we are using a legacy function
|
||||||
assert len(resolver.strategy.populate_indicators.__annotations__) == 2
|
assert resolver.strategy._populate_fun_len == 2
|
||||||
assert 'dataframe' in resolver.strategy.populate_indicators.__annotations__
|
assert resolver.strategy._buy_fun_len == 2
|
||||||
assert 'pair' not in resolver.strategy.populate_indicators.__annotations__
|
assert resolver.strategy._sell_fun_len == 2
|
||||||
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__
|
|
||||||
|
|
||||||
indicator_df = resolver.strategy.advise_indicators(result, pair=pair)
|
indicator_df = resolver.strategy.advise_indicators(result, pair=pair)
|
||||||
assert type(indicator_df) is DataFrame
|
assert type(indicator_df) is DataFrame
|
||||||
|
Loading…
Reference in New Issue
Block a user