add strategy_safe_wrapper

This commit is contained in:
orehunt 2020-10-25 06:47:06 +01:00
parent bc143a5b68
commit e45ba60acf
2 changed files with 5 additions and 4 deletions

View File

@ -433,7 +433,8 @@ class FreqtradeBot:
Trade.total_open_trades_stakes() Trade.total_open_trades_stakes()
) )
else: else:
stake_amount = self.strategy.get_stake_amount(pair) stake_amount = strategy_safe_wrapper(self.strategy.get_stake_amount,
default_retval=0)(pair)
if stake_amount == constants.UNLIMITED_STAKE_AMOUNT: if stake_amount == constants.UNLIMITED_STAKE_AMOUNT:
stake_amount = self._calculate_unlimited_stake_amount() stake_amount = self._calculate_unlimited_stake_amount()

View File

@ -436,13 +436,13 @@ class IStrategy(ABC):
:param pair: pair in format ANT/BTC :param pair: pair in format ANT/BTC
:param timeframe: timeframe to use :param timeframe: timeframe to use
:param dataframe: Analyzed dataframe to get signal from. :param dataframe: Analyzed dataframe to get signal from.
:return: (Buy, Sell, Date) A tuple indicating buy/sell signal for the latest date :return: (Buy, Sell) A bool-tuple indicating buy/sell signal
""" """
if not isinstance(dataframe, DataFrame) or dataframe.empty: if not isinstance(dataframe, DataFrame) or dataframe.empty:
logger.warning(f'Empty candle (OHLCV) data for pair {pair}') logger.warning(f'Empty candle (OHLCV) data for pair {pair}')
return False, False return False, False
latest_date: datetime = dataframe['date'].max() latest_date = dataframe['date'].max()
latest = dataframe.loc[dataframe['date'] == latest_date].iloc[-1] latest = dataframe.loc[dataframe['date'] == latest_date].iloc[-1]
# Explicitly convert to arrow object to ensure the below comparison does not fail # Explicitly convert to arrow object to ensure the below comparison does not fail
latest_date = arrow.get(latest_date) latest_date = arrow.get(latest_date)
@ -459,7 +459,7 @@ class IStrategy(ABC):
(buy, sell) = latest[SignalType.BUY.value] == 1, latest[SignalType.SELL.value] == 1 (buy, sell) = latest[SignalType.BUY.value] == 1, latest[SignalType.SELL.value] == 1
logger.debug('trigger: %s (pair=%s) buy=%s sell=%s', logger.debug('trigger: %s (pair=%s) buy=%s sell=%s',
latest['date'], pair, str(buy), str(sell)) latest['date'], pair, str(buy), str(sell))
return buy, sell return buy, sell
def should_sell(self, trade: Trade, rate: float, date: datetime, buy: bool, def should_sell(self, trade: Trade, rate: float, date: datetime, buy: bool,