)
self.freqai_info["feature_parameters"][pair] = {}
self.freqai_info["feature_parameters"][pair]["label_period_candles"] = (
- self.__optuna_period_params[pair].get(
- "label_period_candles", self.ft_params["label_period_candles"]
- )
+ self.__optuna_period_params[
+ pair
+ ].get("label_period_candles", self.ft_params["label_period_candles"])
)
def fit(self, data_dictionary: Dict, dk: FreqaiDataKitchen, **kwargs) -> Any:
dk.data["extra_returns_per_train"]["DI_cutoff"] = cutoff
dk.data["extra_returns_per_train"]["label_period_candles"] = (
- self.__optuna_period_params.get(pair, {}).get(
- "label_period_candles", self.ft_params["label_period_candles"]
- )
+ self.__optuna_period_params.get(
+ pair, {}
+ ).get("label_period_candles", self.ft_params["label_period_candles"])
)
dk.data["extra_returns_per_train"]["hp_rmse"] = self.__optuna_hp_rmse.get(
pair, -1
pred_df: pd.DataFrame, fit_live_predictions_candles: int, label_period_candles: int
) -> tuple[float, float]:
label_period_frequency: int = int(
- fit_live_predictions_candles / label_period_candles
+ fit_live_predictions_candles / (label_period_candles * 2)
)
extrema = pred_df.tail(label_period_candles * label_period_frequency)[
EXTREMA_COLUMN
)
label_period_frequency: int = int(
- fit_live_predictions_candles / label_period_candles
+ fit_live_predictions_candles / (label_period_candles * 2)
)
min_pred = pred_df_sorted.iloc[-label_period_frequency:].mean()
max_pred = pred_df_sorted.iloc[:label_period_frequency].mean()
)
label_period_frequency: int = int(
- fit_live_predictions_candles / label_period_candles
+ fit_live_predictions_candles / (label_period_candles * 2)
)
min_pred = pred_df_sorted.iloc[-label_period_frequency:].median()
max_pred = pred_df_sorted.iloc[:label_period_frequency].median()
)
y_pred = model.predict(X_test)
- min_label_period_candles = int(fit_live_predictions_candles / 6)
- max_label_period_candles = int(fit_live_predictions_candles / 2)
+ min_label_period_candles = int(fit_live_predictions_candles / 20)
+ max_label_period_candles = int(fit_live_predictions_candles / 4)
label_period_candles = trial.suggest_int(
"label_period_candles",
min_label_period_candles,
)
self.freqai_info["feature_parameters"][pair] = {}
self.freqai_info["feature_parameters"][pair]["label_period_candles"] = (
- self.__optuna_period_params[pair].get(
- "label_period_candles", self.ft_params["label_period_candles"]
- )
+ self.__optuna_period_params[
+ pair
+ ].get("label_period_candles", self.ft_params["label_period_candles"])
)
def fit(self, data_dictionary: Dict, dk: FreqaiDataKitchen, **kwargs) -> Any:
dk.data["extra_returns_per_train"]["DI_cutoff"] = cutoff
dk.data["extra_returns_per_train"]["label_period_candles"] = (
- self.__optuna_period_params.get(pair, {}).get(
- "label_period_candles", self.ft_params["label_period_candles"]
- )
+ self.__optuna_period_params.get(
+ pair, {}
+ ).get("label_period_candles", self.ft_params["label_period_candles"])
)
dk.data["extra_returns_per_train"]["hp_rmse"] = self.__optuna_hp_rmse.get(
pair, -1
pred_df: pd.DataFrame, fit_live_predictions_candles: int, label_period_candles: int
) -> tuple[float, float]:
label_period_frequency: int = int(
- fit_live_predictions_candles / label_period_candles
+ fit_live_predictions_candles / (label_period_candles * 2)
)
extrema = pred_df.tail(label_period_candles * label_period_frequency)[
EXTREMA_COLUMN
)
label_period_frequency: int = int(
- fit_live_predictions_candles / label_period_candles
+ fit_live_predictions_candles / (label_period_candles * 2)
)
min_pred = pred_df_sorted.iloc[-label_period_frequency:].mean()
max_pred = pred_df_sorted.iloc[:label_period_frequency].mean()
)
label_period_frequency: int = int(
- fit_live_predictions_candles / label_period_candles
+ fit_live_predictions_candles / (label_period_candles * 2)
)
min_pred = pred_df_sorted.iloc[-label_period_frequency:].median()
max_pred = pred_df_sorted.iloc[:label_period_frequency].median()
)
y_pred = model.predict(X_test)
- min_label_period_candles = int(fit_live_predictions_candles / 6)
- max_label_period_candles = int(fit_live_predictions_candles / 2)
+ min_label_period_candles = int(fit_live_predictions_candles / 20)
+ max_label_period_candles = int(fit_live_predictions_candles / 4)
label_period_candles = trial.suggest_int(
"label_period_candles",
min_label_period_candles,
from technical.pivots_points import pivots_points
from freqtrade.exchange import timeframe_to_prev_date
from freqtrade.persistence import Trade
-from scipy.signal import find_peaks
+from scipy.signal import argrelmin, argrelmax
import numpy as np
import pandas_ta as pta
self.freqai_info["feature_parameters"]["label_period_candles"],
)
)
- min_peaks, _ = find_peaks(
- -dataframe["low"].values,
- distance=label_period_candles,
+ min_peaks = argrelmin(
+ dataframe["low"].values,
+ order=label_period_candles,
)
- max_peaks, _ = find_peaks(
+ max_peaks = argrelmax(
dataframe["high"].values,
- distance=label_period_candles,
+ order=label_period_candles,
)
+ # min_peaks, _ = find_peaks(
+ # -dataframe["low"].values,
+ # distance=label_period_candles,
+ # )
+ # max_peaks, _ = find_peaks(
+ # dataframe["high"].values,
+ # distance=label_period_candles,
+ # )
dataframe[EXTREMA_COLUMN] = 0
- for mp in min_peaks:
+ for mp in min_peaks[0]:
dataframe.at[mp, EXTREMA_COLUMN] = -1
- for mp in max_peaks:
+ for mp in max_peaks[0]:
dataframe.at[mp, EXTREMA_COLUMN] = 1
+ # for mp in min_peaks:
+ # dataframe.at[mp, EXTREMA_COLUMN] = -1
+ # for mp in max_peaks:
+ # dataframe.at[mp, EXTREMA_COLUMN] = 1
dataframe["minima"] = np.where(dataframe[EXTREMA_COLUMN] == -1, -1, 0)
dataframe["maxima"] = np.where(dataframe[EXTREMA_COLUMN] == 1, 1, 0)
dataframe[EXTREMA_COLUMN] = (