) -> float:
values = series.to_numpy()
- if values.size < 2 or np.all(np.isclose(values, values[0])):
- return values.mean() if values.size > 0 else np.nan
+ if values.size == 0:
+ return np.nan
+ if values.size == 1 or np.all(np.isclose(values, values[0])):
+ return values.mean()
try:
return threshold_func(values)
except Exception:
INTERFACE_VERSION = 3
def version(self) -> str:
- return "3.3.120"
+ return "3.3.121"
timeframe = "5m"
return False
lower_bound = 0
upper_bound = 0
- price_deviation = (last_candle_natr / 100.0) * self.get_entry_natr_ratio(
- pair, 0.00075
+ unfavorable_deviation = (last_candle_natr / 100.0) * self.get_entry_natr_ratio(
+ pair, 0.00125
+ )
+ favorable_deviation = (last_candle_natr / 100.0) * self.get_entry_natr_ratio(
+ pair, 0.00225
)
if side == "long":
- lower_bound = last_candle_weighted_close * (1 - 2 * price_deviation)
- upper_bound = last_candle_weighted_close * (1 + price_deviation)
+ lower_bound = last_candle_weighted_close * (1 - favorable_deviation)
+ upper_bound = last_candle_weighted_close * (1 + unfavorable_deviation)
elif side == "short":
- lower_bound = last_candle_weighted_close * (1 - price_deviation)
- upper_bound = last_candle_weighted_close * (1 + 2 * price_deviation)
+ lower_bound = last_candle_weighted_close * (1 - unfavorable_deviation)
+ upper_bound = last_candle_weighted_close * (1 + favorable_deviation)
if lower_bound < 0:
logger.info(
f"User denied {side} entry for {pair}: calculated lower bound {lower_bound} is below zero"