Explicitly check if dp is available
This commit is contained in:
parent
55fa514ec9
commit
8166b37253
@ -26,7 +26,7 @@ class DataProvider:
|
|||||||
self._config = config
|
self._config = config
|
||||||
self._exchange = exchange
|
self._exchange = exchange
|
||||||
self._pairlists = pairlists
|
self._pairlists = pairlists
|
||||||
self.__cached_pairs: Dict[PairWithTimeframe, Tuple(DataFrame, datetime)] = {}
|
self.__cached_pairs: Dict[PairWithTimeframe, Tuple[DataFrame, datetime]] = {}
|
||||||
|
|
||||||
def _set_cached_df(self, pair: str, timeframe: str, dataframe: DataFrame) -> None:
|
def _set_cached_df(self, pair: str, timeframe: str, dataframe: DataFrame) -> None:
|
||||||
"""
|
"""
|
||||||
@ -102,8 +102,7 @@ class DataProvider:
|
|||||||
logger.warning(f"No data found for ({pair}, {timeframe}).")
|
logger.warning(f"No data found for ({pair}, {timeframe}).")
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def get_analyzed_dataframe(self, pair: str,
|
def get_analyzed_dataframe(self, pair: str, timeframe: str) -> Tuple[DataFrame, datetime]:
|
||||||
timeframe: str = None) -> Tuple[DataFrame, datetime]:
|
|
||||||
"""
|
"""
|
||||||
:param pair: pair to get the data for
|
:param pair: pair to get the data for
|
||||||
:param timeframe: timeframe to get data for
|
:param timeframe: timeframe to get data for
|
||||||
|
@ -14,7 +14,7 @@ from pandas import DataFrame
|
|||||||
|
|
||||||
from freqtrade.constants import ListPairsWithTimeframes
|
from freqtrade.constants import ListPairsWithTimeframes
|
||||||
from freqtrade.data.dataprovider import DataProvider
|
from freqtrade.data.dataprovider import DataProvider
|
||||||
from freqtrade.exceptions import StrategyError
|
from freqtrade.exceptions import StrategyError, OperationalException
|
||||||
from freqtrade.exchange import timeframe_to_minutes
|
from freqtrade.exchange import timeframe_to_minutes
|
||||||
from freqtrade.persistence import Trade
|
from freqtrade.persistence import Trade
|
||||||
from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper
|
from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper
|
||||||
@ -276,7 +276,8 @@ class IStrategy(ABC):
|
|||||||
# Defs that only make change on new candle data.
|
# Defs that only make change on new candle data.
|
||||||
dataframe = self.analyze_ticker(dataframe, metadata)
|
dataframe = self.analyze_ticker(dataframe, metadata)
|
||||||
self._last_candle_seen_per_pair[pair] = dataframe.iloc[-1]['date']
|
self._last_candle_seen_per_pair[pair] = dataframe.iloc[-1]['date']
|
||||||
self.dp._set_cached_df(pair, self.timeframe, dataframe)
|
if self.dp:
|
||||||
|
self.dp._set_cached_df(pair, self.timeframe, dataframe)
|
||||||
else:
|
else:
|
||||||
logger.debug("Skipping TA Analysis for already analyzed candle")
|
logger.debug("Skipping TA Analysis for already analyzed candle")
|
||||||
dataframe['buy'] = 0
|
dataframe['buy'] = 0
|
||||||
@ -295,6 +296,8 @@ class IStrategy(ABC):
|
|||||||
The analyzed dataframe is then accessible via `dp.get_analyzed_dataframe()`.
|
The analyzed dataframe is then accessible via `dp.get_analyzed_dataframe()`.
|
||||||
:param pair: Pair to analyze.
|
:param pair: Pair to analyze.
|
||||||
"""
|
"""
|
||||||
|
if not self.dp:
|
||||||
|
raise OperationalException("DataProvider not found.")
|
||||||
dataframe = self.dp.ohlcv(pair, self.timeframe)
|
dataframe = self.dp.ohlcv(pair, self.timeframe)
|
||||||
if not isinstance(dataframe, DataFrame) or dataframe.empty:
|
if not isinstance(dataframe, DataFrame) or dataframe.empty:
|
||||||
logger.warning('Empty candle (OHLCV) data for pair %s', pair)
|
logger.warning('Empty candle (OHLCV) data for pair %s', pair)
|
||||||
@ -349,6 +352,8 @@ class IStrategy(ABC):
|
|||||||
:param dataframe: Dataframe to analyze
|
:param dataframe: Dataframe to analyze
|
||||||
:return: (Buy, Sell) A bool-tuple indicating buy/sell signal
|
:return: (Buy, Sell) A bool-tuple indicating buy/sell signal
|
||||||
"""
|
"""
|
||||||
|
if not self.dp:
|
||||||
|
raise OperationalException("DataProvider not found.")
|
||||||
|
|
||||||
dataframe, _ = self.dp.get_analyzed_dataframe(pair, timeframe)
|
dataframe, _ = self.dp.get_analyzed_dataframe(pair, timeframe)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user