https://github.com/sponsors/robcaulk
"""
- version = "3.7.49"
+ version = "3.7.50"
@cached_property
def _optuna_config(self) -> dict:
return error
+def calculate_quantile(values: np.ndarray, value: float) -> float:
+ if values.size == 0:
+ return np.nan
+
+ first_value = values[0]
+ if np.all(np.isclose(values, first_value)):
+ return (
+ 0.5
+ if np.isclose(value, first_value)
+ else (0.0 if value < first_value else 1.0)
+ )
+
+ return np.sum(values <= value) / values.size
+
+
class TrendDirection(IntEnum):
NEUTRAL = 0
UP = 1
candidate_pivot_value = np.nan
candidate_pivot_direction: TrendDirection = TrendDirection.NEUTRAL
- def calculate_quantile(values: np.ndarray, pos: int, start: int, end: int) -> float:
- if start >= end:
- return np.nan
- if np.all(np.isclose(values[start:end], values[start])):
- return 0.5
- return np.sum(values[start:end] <= values[pos]) / len(values[start:end])
-
def calculate_depth_factor(
pos: int,
min_factor: float = 0.5,
if start >= end:
return (min_factor + max_factor) / 2
- quantile = calculate_quantile(get_natr_values(natr_period), pos, start, end)
+ natr_values = get_natr_values(natr_period)
+ lookback_natr_values = natr_values[start:end]
+ quantile = calculate_quantile(lookback_natr_values, natr_values[pos])
return max_factor - (max_factor - min_factor) * quantile
if start >= end:
return min_strength
- quantile = calculate_quantile(get_natr_values(natr_period), pos, start, end)
+ natr_values = get_natr_values(natr_period)
+ lookback_natr_values = natr_values[start:end]
+ quantile = calculate_quantile(lookback_natr_values, natr_values[pos])
return min_strength + (max_strength - min_strength) * quantile
from Utils import (
alligator,
bottom_change_percent,
+ calculate_quantile,
zigzag,
ewo,
non_zero_diff,
INTERFACE_VERSION = 3
def version(self) -> str:
- return "3.3.47"
+ return "3.3.48"
timeframe = "5m"
* (1 / math.log10(3.75 + 0.25 * trade_duration_candles))
)
- @staticmethod
- def calculate_quantile(values: np.ndarray, value: float) -> float:
- if values.size == 0:
- return np.nan
-
- if np.all(np.isclose(values, values[0])):
- if np.isclose(value, values[0]):
- return 0.5
- elif value < values[0]:
- return 0.0
- else:
- return 1.0
-
- return np.sum(values <= value) / values.size
-
def get_take_profit_distance(self, df: DataFrame, trade: Trade) -> Optional[float]:
trade_duration_candles = QuickAdapterV3.get_trade_duration_candles(df, trade)
if not QuickAdapterV3.is_trade_duration_valid(trade_duration_candles):
trade_natr_values = df.loc[
df["date"] >= entry_date, "natr_label_period_candles"
].values
- current_natr_quantile = QuickAdapterV3.calculate_quantile(
- trade_natr_values, current_natr
- )
+ current_natr_quantile = calculate_quantile(trade_natr_values, current_natr)
if isna(current_natr_quantile):
return None
entry_natr_weight = 1.0 - current_natr_quantile
)
+def calculate_quantile(values: np.ndarray, value: float) -> float:
+ if values.size == 0:
+ return np.nan
+
+ first_value = values[0]
+ if np.all(np.isclose(values, first_value)):
+ return (
+ 0.5
+ if np.isclose(value, first_value)
+ else (0.0 if value < first_value else 1.0)
+ )
+
+ return np.sum(values <= value) / values.size
+
+
class TrendDirection(IntEnum):
NEUTRAL = 0
UP = 1
candidate_pivot_value = np.nan
candidate_pivot_direction: TrendDirection = TrendDirection.NEUTRAL
- def calculate_quantile(values: np.ndarray, pos: int, start: int, end: int) -> float:
- if start >= end:
- return np.nan
- if np.all(np.isclose(values[start:end], values[start])):
- return 0.5
- return np.sum(values[start:end] <= values[pos]) / len(values[start:end])
-
def calculate_depth_factor(
pos: int,
min_factor: float = 0.5,
if start >= end:
return (min_factor + max_factor) / 2
- quantile = calculate_quantile(get_natr_values(natr_period), pos, start, end)
+ natr_values = get_natr_values(natr_period)
+ lookback_natr_values = natr_values[start:end]
+ quantile = calculate_quantile(lookback_natr_values, natr_values[pos])
return max_factor - (max_factor - min_factor) * quantile
if start >= end:
return min_strength
- quantile = calculate_quantile(get_natr_values(natr_period), pos, start, end)
+ natr_values = get_natr_values(natr_period)
+ lookback_natr_values = natr_values[start:end]
+ quantile = calculate_quantile(lookback_natr_values, natr_values[pos])
return min_strength + (max_strength - min_strength) * quantile