import numpy as np
import pandas as pd
+
# import talib.abstract as ta
from freqtrade.persistence import Trade
from freqtrade.strategy import IStrategy
ACTION_COLUMN: Final = "&-action"
+def _ensure_datetime_series(series: pd.Series) -> pd.Series:
+ if pd.api.types.is_integer_dtype(series):
+ return pd.to_datetime(series, unit="ms", utc=True)
+ return pd.to_datetime(series, utc=True)
+
+
class RLAgentStrategy(IStrategy):
"""
RLAgentStrategy
def feature_engineering_standard(
self, dataframe: DataFrame, metadata: dict[str, Any], **kwargs
) -> DataFrame:
- dates = pd.to_datetime(dataframe["date"], utc=True)
+ dates = _ensure_datetime_series(dataframe["date"])
dataframe["%-day_of_week"] = (dates.dt.dayofweek + 1) / 7
dataframe["%-hour_of_day"] = (dates.dt.hour + 1) / 25
LABEL_COLUMNS,
REGRESSORS,
Regressor,
+ ensure_datetime_series,
eval_set_and_weights,
fit_regressor,
format_dict,
training_filter=True,
)
- start_date = pd.to_datetime(
- unfiltered_df["date"].iloc[0], utc=True
- ).strftime("%Y-%m-%d")
- end_date = pd.to_datetime(
- unfiltered_df["date"].iloc[-1], utc=True
- ).strftime("%Y-%m-%d")
+ dates = ensure_datetime_series(unfiltered_df["date"])
+ start_date = dates.iloc[0].strftime("%Y-%m-%d")
+ end_date = dates.iloc[-1].strftime("%Y-%m-%d")
logger.info(
f"-------------------- Training on data from {start_date} to "
f"{end_date} --------------------"
)
import numpy as np
-import pandas as pd
import pandas_ta as pta
import talib.abstract as ta
from freqtrade.exchange import timeframe_to_minutes, timeframe_to_prev_date
apply_label_weighting,
bottom_log_return,
calculate_quantile,
+ ensure_datetime_series,
ewo,
format_dict,
format_number,
def feature_engineering_standard(
self, dataframe: DataFrame, metadata: dict[str, Any], **kwargs
) -> DataFrame:
- dates = pd.to_datetime(dataframe["date"], utc=True)
+ dates = ensure_datetime_series(dataframe["date"])
dataframe["%-day_of_week"] = (dates.dt.dayofweek + 1) / 7
dataframe["%-hour_of_day"] = (dates.dt.hour + 1) / 25
)
+def ensure_datetime_series(series: pd.Series) -> pd.Series:
+ if pd.api.types.is_integer_dtype(series):
+ return pd.to_datetime(series, unit="ms", utc=True)
+ return pd.to_datetime(series, utc=True)
+
+
def get_distance(p1: T, p2: T) -> T:
return abs(p1 - p2)