From: Jérôme Benoit Date: Fri, 13 Jun 2025 20:22:22 +0000 (+0200) Subject: refactor(qav3): remove unneeded zigzag caching X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=a5b2d2fa4666324057a24afe54207b95f640a317;p=freqai-strategies.git refactor(qav3): remove unneeded zigzag caching no performance improvements Signed-off-by: Jérôme Benoit --- diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index d6ae4e8..a12bbe0 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -1,6 +1,5 @@ import copy from enum import IntEnum -import hashlib import logging import json import random @@ -49,7 +48,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): https://github.com/sponsors/robcaulk """ - version = "3.7.86" + version = "3.7.87" @cached_property def _optuna_config(self) -> dict: @@ -1206,45 +1205,6 @@ class TrendDirection(IntEnum): DOWN = -1 -zigzag_cache: dict[str, tuple[list[int], list[float], list[int]], list[float]] = {} - - -def zigzag_cached( - df: pd.DataFrame, - natr_period: int = 14, - natr_ratio: float = 6.0, - cache_size: int = 2048, -) -> tuple[list[int], list[float], list[int], list[float]]: - def hash_df(df: pd.DataFrame) -> str: - hasher = hashlib.sha256() - - arr = df.to_numpy() - - hasher.update(str(arr.shape).encode()) - hasher.update(str(arr.dtype).encode()) - - hasher.update(arr.tobytes()) - - return hasher.hexdigest() - - cache_key = f"{hash_df(df)}-{natr_period}-{natr_ratio}" - if cache_key in zigzag_cache: - return zigzag_cache[cache_key] - - pivots_indices, pivots_values, pivots_directions, pivots_scaled_natrs = zigzag( - df, natr_period=natr_period, natr_ratio=natr_ratio - ) - if len(zigzag_cache) >= cache_size: - del zigzag_cache[next(iter(zigzag_cache))] - zigzag_cache[cache_key] = ( - pivots_indices, - pivots_values, - pivots_directions, - pivots_scaled_natrs, - ) - return pivots_indices, pivots_values, pivots_directions, pivots_scaled_natrs - - def zigzag( df: pd.DataFrame, natr_period: int = 14, @@ -1565,7 +1525,7 @@ def label_objective( if df.empty: return -np.inf, -np.inf - _, pivots_values, _, pivots_scaled_natrs = zigzag_cached( + _, pivots_values, _, pivots_scaled_natrs = zigzag( df, natr_period=label_period_candles, natr_ratio=label_natr_ratio, diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index 5056e24..2db1b5f 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -61,7 +61,7 @@ class QuickAdapterV3(IStrategy): INTERFACE_VERSION = 3 def version(self) -> str: - return "3.3.90" + return "3.3.91" timeframe = "5m" diff --git a/quickadapter/user_data/strategies/Utils.py b/quickadapter/user_data/strategies/Utils.py index a0e379c..d9375a9 100644 --- a/quickadapter/user_data/strategies/Utils.py +++ b/quickadapter/user_data/strategies/Utils.py @@ -1,6 +1,5 @@ from enum import IntEnum from functools import lru_cache -import hashlib from statistics import median import numpy as np import pandas as pd @@ -378,45 +377,6 @@ class TrendDirection(IntEnum): DOWN = -1 -zigzag_cache: dict[str, tuple[list[int], list[float], list[int]], list[float]] = {} - - -def zigzag_cached( - df: pd.DataFrame, - natr_period: int = 14, - natr_ratio: float = 6.0, - cache_size: int = 2048, -) -> tuple[list[int], list[float], list[int], list[float]]: - def hash_df(df: pd.DataFrame) -> str: - hasher = hashlib.sha256() - - arr = df.to_numpy() - - hasher.update(str(arr.shape).encode()) - hasher.update(str(arr.dtype).encode()) - - hasher.update(arr.tobytes()) - - return hasher.hexdigest() - - cache_key = f"{hash_df(df)}-{natr_period}-{natr_ratio}" - if cache_key in zigzag_cache: - return zigzag_cache[cache_key] - - pivots_indices, pivots_values, pivots_directions, pivots_scaled_natrs = zigzag( - df, natr_period=natr_period, natr_ratio=natr_ratio - ) - if len(zigzag_cache) >= cache_size: - del zigzag_cache[next(iter(zigzag_cache))] - zigzag_cache[cache_key] = ( - pivots_indices, - pivots_values, - pivots_directions, - pivots_scaled_natrs, - ) - return pivots_indices, pivots_values, pivots_directions, pivots_scaled_natrs - - def zigzag( df: pd.DataFrame, natr_period: int = 14,