""" type stubs for ferro_ta. Generated for IDE auto-completion and static type checking. """ import logging from collections.abc import Callable from contextlib import AbstractContextManager from typing import Any, TypeVar import numpy as np from numpy.typing import ArrayLike, NDArray _F = TypeVar("_F", bound=Callable[..., Any]) __version__: str # --------------------------------------------------------------------------- # Overlap Studies # --------------------------------------------------------------------------- def SMA(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def EMA(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def WMA(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def DEMA(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def TEMA(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def TRIMA(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def KAMA(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def T3( real: ArrayLike, timeperiod: int = 5, vfactor: float = 0.7 ) -> NDArray[np.float64]: ... def BBANDS( real: ArrayLike, timeperiod: int = 5, nbdevup: float = 2.0, nbdevdn: float = 2.0, matype: int = 0, ) -> tuple[NDArray[np.float64], NDArray[np.float64], NDArray[np.float64]]: ... def MACD( real: ArrayLike, fastperiod: int = 12, slowperiod: int = 26, signalperiod: int = 9, ) -> tuple[NDArray[np.float64], NDArray[np.float64], NDArray[np.float64]]: ... def MACDFIX( real: ArrayLike, signalperiod: int = 9, ) -> tuple[NDArray[np.float64], NDArray[np.float64], NDArray[np.float64]]: ... def MACDEXT( real: ArrayLike, fastperiod: int = 12, fastmatype: int = 0, slowperiod: int = 26, slowmatype: int = 0, signalperiod: int = 9, signalmatype: int = 0, ) -> tuple[NDArray[np.float64], NDArray[np.float64], NDArray[np.float64]]: ... def SAR( high: ArrayLike, low: ArrayLike, acceleration: float = 0.02, maximum: float = 0.2, ) -> NDArray[np.float64]: ... def SAREXT( high: ArrayLike, low: ArrayLike, startvalue: float = 0.0, offsetonreverse: float = 0.0, accelerationinitlong: float = 0.02, accelerationlong: float = 0.02, accelerationmaxlong: float = 0.2, accelerationinitshort: float = 0.02, accelerationshort: float = 0.02, accelerationmaxshort: float = 0.2, ) -> NDArray[np.float64]: ... def MA( real: ArrayLike, timeperiod: int = 30, matype: int = 0 ) -> NDArray[np.float64]: ... def MAVP( real: ArrayLike, periods: ArrayLike, minperiod: int = 2, maxperiod: int = 30, matype: int = 0, ) -> NDArray[np.float64]: ... def MAMA( real: ArrayLike, fastlimit: float = 0.5, slowlimit: float = 0.05, ) -> tuple[NDArray[np.float64], NDArray[np.float64]]: ... def MIDPOINT(real: ArrayLike, timeperiod: int = 14) -> NDArray[np.float64]: ... def MIDPRICE( high: ArrayLike, low: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... # --------------------------------------------------------------------------- # Momentum Indicators # --------------------------------------------------------------------------- def RSI(real: ArrayLike, timeperiod: int = 14) -> NDArray[np.float64]: ... def MOM(real: ArrayLike, timeperiod: int = 10) -> NDArray[np.float64]: ... def ROC(real: ArrayLike, timeperiod: int = 10) -> NDArray[np.float64]: ... def ROCP(real: ArrayLike, timeperiod: int = 10) -> NDArray[np.float64]: ... def ROCR(real: ArrayLike, timeperiod: int = 10) -> NDArray[np.float64]: ... def ROCR100(real: ArrayLike, timeperiod: int = 10) -> NDArray[np.float64]: ... def WILLR( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def AROON( high: ArrayLike, low: ArrayLike, timeperiod: int = 14, ) -> tuple[NDArray[np.float64], NDArray[np.float64]]: ... def AROONOSC( high: ArrayLike, low: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def CCI( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def MFI( high: ArrayLike, low: ArrayLike, close: ArrayLike, volume: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def BOP( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike, ) -> NDArray[np.float64]: ... def STOCHF( high: ArrayLike, low: ArrayLike, close: ArrayLike, fastk_period: int = 5, fastd_period: int = 3, fastd_matype: int = 0, ) -> tuple[NDArray[np.float64], NDArray[np.float64]]: ... def STOCH( high: ArrayLike, low: ArrayLike, close: ArrayLike, fastk_period: int = 5, slowk_period: int = 3, slowk_matype: int = 0, slowd_period: int = 3, slowd_matype: int = 0, ) -> tuple[NDArray[np.float64], NDArray[np.float64]]: ... def STOCHRSI( real: ArrayLike, timeperiod: int = 14, fastk_period: int = 5, fastd_period: int = 3, fastd_matype: int = 0, ) -> tuple[NDArray[np.float64], NDArray[np.float64]]: ... def APO( real: ArrayLike, fastperiod: int = 12, slowperiod: int = 26, matype: int = 0, ) -> NDArray[np.float64]: ... def PPO( real: ArrayLike, fastperiod: int = 12, slowperiod: int = 26, matype: int = 0, ) -> NDArray[np.float64]: ... def CMO(real: ArrayLike, timeperiod: int = 14) -> NDArray[np.float64]: ... def PLUS_DM( high: ArrayLike, low: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def MINUS_DM( high: ArrayLike, low: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def PLUS_DI( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def MINUS_DI( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def DX( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def ADX( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def ADXR( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def TRIX(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def ULTOSC( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod1: int = 7, timeperiod2: int = 14, timeperiod3: int = 28, ) -> NDArray[np.float64]: ... def TRANGE( high: ArrayLike, low: ArrayLike, close: ArrayLike, ) -> NDArray[np.float64]: ... # --------------------------------------------------------------------------- # Volume Indicators # --------------------------------------------------------------------------- def AD( high: ArrayLike, low: ArrayLike, close: ArrayLike, volume: ArrayLike, ) -> NDArray[np.float64]: ... def ADOSC( high: ArrayLike, low: ArrayLike, close: ArrayLike, volume: ArrayLike, fastperiod: int = 3, slowperiod: int = 10, ) -> NDArray[np.float64]: ... def OBV( real: ArrayLike, volume: ArrayLike, ) -> NDArray[np.float64]: ... # --------------------------------------------------------------------------- # Volatility Indicators # --------------------------------------------------------------------------- def ATR( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... def NATR( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... # --------------------------------------------------------------------------- # Statistic Functions # --------------------------------------------------------------------------- def STDDEV( real: ArrayLike, timeperiod: int = 5, nbdev: float = 1.0, ) -> NDArray[np.float64]: ... def VAR( real: ArrayLike, timeperiod: int = 5, nbdev: float = 1.0, ) -> NDArray[np.float64]: ... def LINEARREG(real: ArrayLike, timeperiod: int = 14) -> NDArray[np.float64]: ... def LINEARREG_SLOPE(real: ArrayLike, timeperiod: int = 14) -> NDArray[np.float64]: ... def LINEARREG_INTERCEPT( real: ArrayLike, timeperiod: int = 14 ) -> NDArray[np.float64]: ... def LINEARREG_ANGLE(real: ArrayLike, timeperiod: int = 14) -> NDArray[np.float64]: ... def TSF(real: ArrayLike, timeperiod: int = 14) -> NDArray[np.float64]: ... def BETA( real0: ArrayLike, real1: ArrayLike, timeperiod: int = 5, ) -> NDArray[np.float64]: ... def CORREL( real0: ArrayLike, real1: ArrayLike, timeperiod: int = 30, ) -> NDArray[np.float64]: ... # --------------------------------------------------------------------------- # Price Transforms # --------------------------------------------------------------------------- def AVGPRICE( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike, ) -> NDArray[np.float64]: ... def MEDPRICE(high: ArrayLike, low: ArrayLike) -> NDArray[np.float64]: ... def TYPPRICE( high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.float64]: ... def WCLPRICE( high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.float64]: ... # --------------------------------------------------------------------------- # Cycle Indicators # --------------------------------------------------------------------------- def HT_TRENDLINE(real: ArrayLike) -> NDArray[np.float64]: ... def HT_DCPERIOD(real: ArrayLike) -> NDArray[np.float64]: ... def HT_DCPHASE(real: ArrayLike) -> NDArray[np.float64]: ... def HT_PHASOR(real: ArrayLike) -> tuple[NDArray[np.float64], NDArray[np.float64]]: ... def HT_SINE(real: ArrayLike) -> tuple[NDArray[np.float64], NDArray[np.float64]]: ... def HT_TRENDMODE(real: ArrayLike) -> NDArray[np.int32]: ... # --------------------------------------------------------------------------- # Math Operators # --------------------------------------------------------------------------- def ADD(real0: ArrayLike, real1: ArrayLike) -> NDArray[np.float64]: ... def SUB(real0: ArrayLike, real1: ArrayLike) -> NDArray[np.float64]: ... def MULT(real0: ArrayLike, real1: ArrayLike) -> NDArray[np.float64]: ... def DIV(real0: ArrayLike, real1: ArrayLike) -> NDArray[np.float64]: ... def SUM(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def MAX(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def MIN(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.float64]: ... def MAXINDEX(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.int32]: ... def MININDEX(real: ArrayLike, timeperiod: int = 30) -> NDArray[np.int32]: ... # Math Transforms def ACOS(real: ArrayLike) -> NDArray[np.float64]: ... def ASIN(real: ArrayLike) -> NDArray[np.float64]: ... def ATAN(real: ArrayLike) -> NDArray[np.float64]: ... def CEIL(real: ArrayLike) -> NDArray[np.float64]: ... def COS(real: ArrayLike) -> NDArray[np.float64]: ... def COSH(real: ArrayLike) -> NDArray[np.float64]: ... def EXP(real: ArrayLike) -> NDArray[np.float64]: ... def FLOOR(real: ArrayLike) -> NDArray[np.float64]: ... def LN(real: ArrayLike) -> NDArray[np.float64]: ... def LOG10(real: ArrayLike) -> NDArray[np.float64]: ... def SIN(real: ArrayLike) -> NDArray[np.float64]: ... def SINH(real: ArrayLike) -> NDArray[np.float64]: ... def SQRT(real: ArrayLike) -> NDArray[np.float64]: ... def TAN(real: ArrayLike) -> NDArray[np.float64]: ... def TANH(real: ArrayLike) -> NDArray[np.float64]: ... # --------------------------------------------------------------------------- # Extended Indicators (Phase 8 + 9) # --------------------------------------------------------------------------- def VWAP( high: ArrayLike, low: ArrayLike, close: ArrayLike, volume: ArrayLike, timeperiod: int = 0, ) -> NDArray[np.float64]: ... def SUPERTREND( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 7, multiplier: float = 3.0, ) -> tuple[NDArray[np.float64], NDArray[np.int8]]: ... def ICHIMOKU( high: ArrayLike, low: ArrayLike, close: ArrayLike, tenkan_period: int = 9, kijun_period: int = 26, senkou_b_period: int = 52, displacement: int = 26, ) -> tuple[ NDArray[np.float64], NDArray[np.float64], NDArray[np.float64], NDArray[np.float64], NDArray[np.float64], ]: ... def DONCHIAN( high: ArrayLike, low: ArrayLike, timeperiod: int = 20, ) -> tuple[NDArray[np.float64], NDArray[np.float64], NDArray[np.float64]]: ... def PIVOT_POINTS( high: ArrayLike, low: ArrayLike, close: ArrayLike, method: str = "classic", ) -> tuple[ NDArray[np.float64], NDArray[np.float64], NDArray[np.float64], NDArray[np.float64], NDArray[np.float64], ]: ... def KELTNER_CHANNELS( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 20, atr_period: int = 10, multiplier: float = 2.0, ) -> tuple[NDArray[np.float64], NDArray[np.float64], NDArray[np.float64]]: ... def HULL_MA( close: ArrayLike, timeperiod: int = 16, ) -> NDArray[np.float64]: ... def CHANDELIER_EXIT( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 22, multiplier: float = 3.0, ) -> tuple[NDArray[np.float64], NDArray[np.float64]]: ... def VWMA( close: ArrayLike, volume: ArrayLike, timeperiod: int = 20, ) -> NDArray[np.float64]: ... def CHOPPINESS_INDEX( high: ArrayLike, low: ArrayLike, close: ArrayLike, timeperiod: int = 14, ) -> NDArray[np.float64]: ... # --------------------------------------------------------------------------- # Streaming / Incremental API (Phase 3) # --------------------------------------------------------------------------- class StreamingSMA: period: int def __init__(self, period: int) -> None: ... def update(self, value: float) -> float: ... def reset(self) -> None: ... class StreamingEMA: period: int def __init__(self, period: int) -> None: ... def update(self, value: float) -> float: ... def reset(self) -> None: ... class StreamingRSI: period: int def __init__(self, period: int = 14) -> None: ... def update(self, value: float) -> float: ... def reset(self) -> None: ... class StreamingATR: period: int def __init__(self, period: int = 14) -> None: ... def update(self, high: float, low: float, close: float) -> float: ... def reset(self) -> None: ... class StreamingBBands: period: int def __init__( self, period: int = 20, nbdevup: float = 2.0, nbdevdn: float = 2.0, ) -> None: ... def update(self, value: float) -> tuple[float, float, float]: ... def reset(self) -> None: ... class StreamingMACD: def __init__( self, fastperiod: int = 12, slowperiod: int = 26, signalperiod: int = 9, ) -> None: ... def update(self, value: float) -> tuple[float, float, float]: ... def reset(self) -> None: ... class StreamingStoch: def __init__( self, fastk_period: int = 5, slowk_period: int = 3, slowd_period: int = 3, ) -> None: ... def update(self, high: float, low: float, close: float) -> tuple[float, float]: ... def reset(self) -> None: ... class StreamingVWAP: def __init__(self) -> None: ... def update(self, high: float, low: float, close: float, volume: float) -> float: ... def reset(self) -> None: ... class StreamingSupertrend: period: int def __init__(self, period: int = 7, multiplier: float = 3.0) -> None: ... def update(self, high: float, low: float, close: float) -> tuple[float, int]: ... def reset(self) -> None: ... # --------------------------------------------------------------------------- # Candlestick Patterns # --------------------------------------------------------------------------- def CDL2CROWS( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDL3BLACKCROWS( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDL3INSIDE( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDL3LINESTRIKE( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDL3OUTSIDE( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDL3STARSINSOUTH( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDL3WHITESOLDIERS( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLABANDONEDBABY( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLADVANCEBLOCK( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLBELTHOLD( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLBREAKAWAY( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLCLOSINGMARUBOZU( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLCONCEALBABYSWALL( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLCOUNTERATTACK( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLDARKCLOUDCOVER( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLDOJI( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLDOJISTAR( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLDRAGONFLYDOJI( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLENGULFING( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLEVENINGDOJISTAR( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLEVENINGSTAR( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLGAPSIDESIDEWHITE( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLGRAVESTONEDOJI( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLHAMMER( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLHANGINGMAN( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLHARAMI( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLHARAMICROSS( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLHIGHWAVE( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLHIKKAKE( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLHIKKAKEMOD( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLHOMINGPIGEON( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLIDENTICAL3CROWS( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLINNECK( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLINVERTEDHAMMER( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLKICKING( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLKICKINGBYLENGTH( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLLADDERBOTTOM( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLLONGLEGGEDDOJI( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLLONGLINE( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLMARUBOZU( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLMATCHINGLOW( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLMATHOLD( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLMORNINGDOJISTAR( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLMORNINGSTAR( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLONNECK( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLPIERCING( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLRICKSHAWMAN( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLRISEFALL3METHODS( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLSEPARATINGLINES( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLSHOOTINGSTAR( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLSHORTLINE( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLSPINNINGTOP( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLSTALLEDPATTERN( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLSTICKSANDWICH( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLTAKURI( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLTASUKIGAP( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLTHRUSTING( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLTRISTAR( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLUNIQUE3RIVER( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLUPSIDEGAP2CROWS( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... def CDLXSIDEGAP3METHODS( open: ArrayLike, high: ArrayLike, low: ArrayLike, close: ArrayLike ) -> NDArray[np.int32]: ... # --------------------------------------------------------------------------- # Batch API # --------------------------------------------------------------------------- from ferro_ta.batch import batch_apply as batch_apply from ferro_ta.batch import batch_ema as batch_ema from ferro_ta.batch import batch_rsi as batch_rsi from ferro_ta.batch import batch_sma as batch_sma from ferro_ta.batch import compute_many as compute_many # --------------------------------------------------------------------------- # Exception hierarchy (re-exported from ferro_ta.exceptions) # --------------------------------------------------------------------------- class FerroTAError(Exception): code: str suggestion: str | None def __init__( self, message: str, *, code: str | None = None, suggestion: str | None = None, ) -> None: ... class FerroTAValueError(FerroTAError, ValueError): code: str suggestion: str | None class FerroTAInputError(FerroTAError, ValueError): code: str suggestion: str | None # --------------------------------------------------------------------------- # API discovery (ferro_ta.api_info) # --------------------------------------------------------------------------- def about() -> dict[str, Any]: ... def indicators(category: str | None = None) -> list[dict[str, Any]]: ... def info(func_or_name: Callable[..., Any] | str) -> dict[str, Any]: ... def methods(category: str | None = None) -> list[dict[str, Any]]: ... # --------------------------------------------------------------------------- # Logging utilities (ferro_ta.logging_utils) # --------------------------------------------------------------------------- def get_logger() -> logging.Logger: ... def enable_debug(fmt: str = ...) -> None: ... def disable_debug() -> None: ... def debug_mode(fmt: str = ...) -> AbstractContextManager[logging.Logger]: ... def log_call(func: Callable[..., Any], *args: Any, **kwargs: Any) -> Any: ... def benchmark( func: Callable[..., Any], *args: Any, n: int = 100, warmup: int = 5, **kwargs: Any, ) -> dict[str, float]: ... def traced(func: _F) -> _F: ...