99dd144576
Completes the F8 family (Bands & channels) end to end: - Rust core: bollinger_bandwidth.rs ((upper - lower) / middle — the squeeze gauge) and percent_b.rs ((price - lower) / (upper - lower) — price position within the bands, unclamped). Both wrap BollingerBands and carry a full Indicator impl, runnable doctest and reference / constant-series / definition-consistency / warmup / reset / batch==streaming tests. - Python: PyBollingerBandwidth / PyPercentB PyO3 classes + module registration + .pyi stubs (defaults (20, 2.0)). - Node: explicit BollingerBandwidthNode and PercentBNode; index.d.ts and index.js updated. - WASM: WasmBollingerBandwidth / WasmPercentB via the scalar macro. - Wiki: Indicator-BollingerBandwidth.md and Indicator-PercentB.md plus rows in Indicators-Overview.md and entries in Home.md. cargo fmt + clippy (core/wickra/data/wasm/node) clean; 362 core tests, 25 data tests and 51 doctests green.
652 lines
22 KiB
Python
652 lines
22 KiB
Python
"""Type stubs for the Wickra public API."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any, Mapping, Optional, Tuple, Union
|
|
|
|
import numpy as np
|
|
from numpy.typing import NDArray
|
|
|
|
__version__: str
|
|
|
|
CandleLike = Union[
|
|
Tuple[float, float, float, float, float, int],
|
|
Mapping[str, Any],
|
|
]
|
|
|
|
class SMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class EMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def alpha(self) -> float: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class WMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class SMMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class TRIMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class BollingerBandwidth:
|
|
def __init__(self, period: int = 20, multiplier: float = 2.0) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def multiplier(self) -> float: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class PercentB:
|
|
def __init__(self, period: int = 20, multiplier: float = 2.0) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def multiplier(self) -> float: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class NATR:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class StdDev:
|
|
def __init__(self, period: int = 20) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class UlcerIndex:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class HistoricalVolatility:
|
|
def __init__(self, period: int = 20, trading_periods: int = 252) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int]: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class AroonOscillator:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class Vortex:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[Tuple[float, float]]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]:
|
|
"""Returns shape ``(n, 2)`` with columns ``[plus, minus]``."""
|
|
...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
|
|
class MassIndex:
|
|
def __init__(self, ema_period: int = 9, sum_period: int = 25) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int]: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class PPO:
|
|
def __init__(self, fast: int = 12, slow: int = 26) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int]: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class DPO:
|
|
def __init__(self, period: int = 20) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def shift(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class Coppock:
|
|
def __init__(
|
|
self, roc_long: int = 14, roc_short: int = 11, wma_period: int = 10
|
|
) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int, int]: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class StochRSI:
|
|
def __init__(self, rsi_period: int = 14, stoch_period: int = 14) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int]: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class UltimateOscillator:
|
|
def __init__(self, short: int = 7, mid: int = 14, long: int = 28) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int, int]: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class MOM:
|
|
def __init__(self, period: int = 10) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class CMO:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class TSI:
|
|
def __init__(self, long: int = 25, short: int = 13) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int]: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class PMO:
|
|
def __init__(self, smoothing1: int = 35, smoothing2: int = 20) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int]: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class ZLEMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def lag(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class T3:
|
|
def __init__(self, period: int, v: float = 0.7) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def volume_factor(self) -> float: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class VWMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
close: NDArray[np.float64],
|
|
volume: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class RSI:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class MACD:
|
|
def __init__(self, fast: int = 12, slow: int = 26, signal: int = 9) -> None: ...
|
|
def update(self, value: float) -> Optional[Tuple[float, float, float]]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]:
|
|
"""Returns shape ``(n, 3)`` with columns ``[macd, signal, histogram]``. NaN during warmup."""
|
|
...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int, int]: ...
|
|
|
|
class BollingerBands:
|
|
def __init__(self, period: int = 20, multiplier: float = 2.0) -> None: ...
|
|
def update(self, value: float) -> Optional[Tuple[float, float, float, float]]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]:
|
|
"""Returns shape ``(n, 4)`` with columns ``[upper, middle, lower, stddev]``."""
|
|
...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
@property
|
|
def multiplier(self) -> float: ...
|
|
|
|
class ATR:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
|
|
class Stochastic:
|
|
def __init__(self, k_period: int = 14, d_period: int = 3) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[Tuple[float, float]]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]:
|
|
"""Returns shape ``(n, 2)`` with columns ``[k, d]``."""
|
|
...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def periods(self) -> Tuple[int, int]: ...
|
|
|
|
class OBV:
|
|
def __init__(self) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
close: NDArray[np.float64],
|
|
volume: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def value(self) -> Optional[float]: ...
|
|
|
|
class DEMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
|
|
class TEMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
|
|
class HMA:
|
|
def __init__(self, period: int) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
|
|
class KAMA:
|
|
def __init__(self, er_period: int = 10, fast: int = 2, slow: int = 30) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class CCI:
|
|
def __init__(self, period: int = 20) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
|
|
class ROC:
|
|
def __init__(self, period: int = 10) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
@property
|
|
def period(self) -> int: ...
|
|
|
|
class WilliamsR:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class ADX:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[Tuple[float, float, float]]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]:
|
|
"""Returns shape ``(n, 3)`` with columns ``[plus_di, minus_di, adx]``."""
|
|
...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class MFI:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
volume: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class TRIX:
|
|
def __init__(self, period: int = 30) -> None: ...
|
|
def update(self, value: float) -> Optional[float]: ...
|
|
def batch(self, prices: NDArray[np.float64]) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class PSAR:
|
|
def __init__(
|
|
self, af_start: float = 0.02, af_step: float = 0.02, af_max: float = 0.20
|
|
) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class Keltner:
|
|
def __init__(
|
|
self, ema_period: int = 20, atr_period: int = 10, multiplier: float = 2.0
|
|
) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[Tuple[float, float, float]]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
) -> NDArray[np.float64]:
|
|
"""Returns shape ``(n, 3)`` with columns ``[upper, middle, lower]``."""
|
|
...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class Donchian:
|
|
def __init__(self, period: int = 20) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[Tuple[float, float, float]]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
) -> NDArray[np.float64]:
|
|
"""Returns shape ``(n, 3)`` with columns ``[upper, middle, lower]``."""
|
|
...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class VWAP:
|
|
def __init__(self) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
close: NDArray[np.float64],
|
|
volume: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class AwesomeOscillator:
|
|
def __init__(self, fast: int = 5, slow: int = 34) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[float]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
) -> NDArray[np.float64]: ...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|
|
|
|
class Aroon:
|
|
def __init__(self, period: int = 14) -> None: ...
|
|
def update(self, candle: CandleLike) -> Optional[Tuple[float, float]]: ...
|
|
def batch(
|
|
self,
|
|
high: NDArray[np.float64],
|
|
low: NDArray[np.float64],
|
|
) -> NDArray[np.float64]:
|
|
"""Returns shape ``(n, 2)`` with columns ``[up, down]``."""
|
|
...
|
|
def reset(self) -> None: ...
|
|
def is_ready(self) -> bool: ...
|
|
def warmup_period(self) -> int: ...
|