"&s-minima_threshold": -2,
"&s-maxima_threshold": 2,
"label_period_candles": 100,
- "label_natr_ratio": 0.12125,
+ "label_natr_ratio": 12,
"hp_rmse": -1,
"train_rmse": -1
},
"label_period_candles": self.ft_params.get(
"label_period_candles", 50
),
- "label_natr_ratio": self.ft_params.get("label_natr_ratio", 0.12125),
+ "label_natr_ratio": self.ft_params.get("label_natr_ratio", 12.0),
}
)
logger.info(
def zigzag(
df: pd.DataFrame,
natr_period: int = 14,
- natr_ratio: float = 0.12125,
+ natr_ratio: float = 12.0,
confirmation_window: int = 3,
initial_depth: int = 12,
) -> tuple[list[int], list[float], list[int]]:
def get_natr_values(period: int) -> np.ndarray:
if period not in natr_values_cache:
natr_values_cache[period] = (
- ta.NATR(df, timeperiod=period).fillna(method="bfill").values
- )
+ ta.NATR(df, timeperiod=period).fillna(method="bfill") / 100
+ ).values
return natr_values_cache[period]
indices = df.index.tolist()
max_label_period_candles,
step=candles_step,
)
- label_natr_ratio = trial.suggest_float("label_natr_ratio", 0.06, 0.3, step=0.0025)
+ label_natr_ratio = trial.suggest_float("label_natr_ratio", 6.0, 30.0, step=0.25)
df = df.iloc[
-(
return -np.inf, -np.inf
scaled_natr_label_period_candles = (
- ta.NATR(df, timeperiod=label_period_candles) * label_natr_ratio
- )
+ ta.NATR(df, timeperiod=label_period_candles).fillna(method="bfill") / 100
+ ) * label_natr_ratio
return scaled_natr_label_period_candles.median(), n
"label_period_candles", 50
),
"label_natr_ratio": self.freqai_info["feature_parameters"].get(
- "label_natr_ratio", 0.12125
+ "label_natr_ratio", 12.0
),
}
)
label_natr_ratio = self._label_params.get(pair, {}).get("label_natr_ratio")
if label_natr_ratio:
return label_natr_ratio
- return self.freqai_info["feature_parameters"].get("label_natr_ratio", 0.12125)
+ return self.freqai_info["feature_parameters"].get("label_natr_ratio", 12.0)
def set_label_natr_ratio(self, pair: str, label_natr_ratio: float):
if label_natr_ratio and isinstance(label_natr_ratio, float):
return None
return (
current_rate
- * current_natr
+ * (current_natr / 100)
* self.get_stoploss_natr_ratio(trade.pair)
* (1 / math.log10(3.75 + 0.25 * trade_duration_candles))
)
)
return (
trade.open_rate
- * take_profit_natr
+ * (take_profit_natr / 100)
* self.get_take_profit_natr_ratio(trade.pair)
* math.log10(9.75 + 0.25 * trade_duration_candles)
)
return False
lower_bound = 0
upper_bound = 0
- price_deviation = last_candle_natr * self.get_entry_natr_ratio(pair)
+ price_deviation = (last_candle_natr / 100) * self.get_entry_natr_ratio(pair)
if side == "long":
lower_bound = last_candle_low * (1 - price_deviation)
upper_bound = last_candle_close * (1 + price_deviation)
def zigzag(
df: pd.DataFrame,
natr_period: int = 14,
- natr_ratio: float = 0.12125,
+ natr_ratio: float = 12.0,
confirmation_window: int = 3,
initial_depth: int = 12,
) -> tuple[list[int], list[float], list[int]]:
def get_natr_values(period: int) -> np.ndarray:
if period not in natr_values_cache:
natr_values_cache[period] = (
- ta.NATR(df, timeperiod=period).fillna(method="bfill").values
- )
+ ta.NATR(df, timeperiod=period).fillna(method="bfill") / 100
+ ).values
return natr_values_cache[period]
indices = df.index.tolist()