natr_values = get_natr_values(natr_period)
start = max(0, pos - lookback_period)
- end = min(pos + 1, len(natr_values))
+ end = min(pos + 1, n)
if start >= end:
return (min_factor + max_factor) / 2
natr_pos = natr_values[pos]
start = max(0, pos - lookback_period)
- end = min(pos + 1, len(natr_values))
+ end = min(pos + 1, n)
if start >= end:
return min_value
natr_min = np.min(natr_values[start:end])
natr_ratio=label_natr_ratio,
)
- if len(pivots_values) < 2:
+ n = len(pivots_values)
+ if n < 2:
return -float("inf"), -float("inf")
scaled_natr_label_period_candles = (
ta.NATR(df, timeperiod=label_period_candles) * label_natr_ratio
)
- return scaled_natr_label_period_candles.median(), len(pivots_values)
+ return scaled_natr_label_period_candles.median(), n
def smoothed_max(series: pd.Series, temperature=1.0) -> float:
if period % 2 != 0:
raise ValueError("period must be even")
+ n = len(df)
+
highs = df["high"]
lows = df["low"]
closes = df["close"]
closes = zero_lag_series(closes, period=period)
fd = pd.Series(np.nan, index=closes.index)
- for i in range(period, len(closes)):
+ for i in range(period, n):
window_highs = highs.iloc[i - period : i]
window_lows = lows.iloc[i - period : i]
fd.iloc[i] = _fractal_dimension(window_highs.values, window_lows.values, period)
frama = pd.Series(np.nan, index=closes.index)
frama.iloc[period - 1] = closes.iloc[:period].mean()
- for i in range(period, len(closes)):
+ for i in range(period, n):
if pd.isna(frama.iloc[i - 1]) or pd.isna(alpha.iloc[i]):
continue
frama.iloc[i] = (
"""
if period <= 0:
raise ValueError("period must be greater than 0")
- if len(series) < period:
+ n = len(series)
+ if n < period:
return pd.Series(index=series.index, dtype=float)
if zero_lag:
smma = pd.Series(np.nan, index=series.index)
smma.iloc[period - 1] = series.iloc[:period].mean()
- for i in range(period, len(series)):
+ for i in range(period, n):
smma.iloc[i] = (smma.iloc[i - 1] * (period - 1) + series.iloc[i]) / period
if offset != 0:
natr_values = get_natr_values(natr_period)
start = max(0, pos - lookback_period)
- end = min(pos + 1, len(natr_values))
+ end = min(pos + 1, n)
if start >= end:
return (min_factor + max_factor) / 2
natr_pos = natr_values[pos]
start = max(0, pos - lookback_period)
- end = min(pos + 1, len(natr_values))
+ end = min(pos + 1, n)
if start >= end:
return min_value
natr_min = np.min(natr_values[start:end])