扩展指标
This commit is contained in:
@@ -0,0 +1,908 @@
|
||||
"""
|
||||
Momentum Indicators — Oscillators measuring speed and change of price movements.
|
||||
|
||||
Functions
|
||||
---------
|
||||
RSI — Relative Strength Index
|
||||
MOM — Momentum
|
||||
ROC — Rate of Change: ((price/prevPrice)-1)*100
|
||||
ROCP — Rate of Change Percentage: (price-prevPrice)/prevPrice
|
||||
ROCR — Rate of Change Ratio: price/prevPrice
|
||||
ROCR100 — Rate of Change Ratio 100 scale: (price/prevPrice)*100
|
||||
WILLR — Williams' %R
|
||||
AROON — Aroon (returns aroon_down, aroon_up)
|
||||
AROONOSC — Aroon Oscillator
|
||||
CCI — Commodity Channel Index
|
||||
MFI — Money Flow Index
|
||||
BOP — Balance Of Power
|
||||
STOCHF — Stochastic Fast
|
||||
STOCH — Stochastic
|
||||
STOCHRSI — Stochastic Relative Strength Index
|
||||
APO — Absolute Price Oscillator
|
||||
PPO — Percentage Price Oscillator
|
||||
CMO — Chande Momentum Oscillator
|
||||
PLUS_DM — Plus Directional Movement
|
||||
MINUS_DM — Minus Directional Movement
|
||||
PLUS_DI — Plus Directional Indicator
|
||||
MINUS_DI — Minus Directional Indicator
|
||||
DX — Directional Movement Index
|
||||
ADX — Average Directional Movement Index
|
||||
ADXR — Average Directional Movement Index Rating
|
||||
TRIX — 1-day Rate-Of-Change of Triple Smooth EMA
|
||||
ULTOSC — Ultimate Oscillator
|
||||
TRANGE — True Range (also in volatility)
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import numpy as np
|
||||
from numpy.typing import ArrayLike
|
||||
|
||||
from ferro_ta._ferro_ta import (
|
||||
adx as _adx,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
adxr as _adxr,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
apo as _apo,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
aroon as _aroon,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
aroonosc as _aroonosc,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
bop as _bop,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
cci as _cci,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
cmo as _cmo,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
dx as _dx,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
mfi as _mfi,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
minus_di as _minus_di,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
minus_dm as _minus_dm,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
mom as _mom,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
plus_di as _plus_di,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
plus_dm as _plus_dm,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
ppo as _ppo,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
roc as _roc,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
rocp as _rocp,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
rocr as _rocr,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
rocr100 as _rocr100,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
rsi as _rsi,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
stoch as _stoch,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
stochf as _stochf,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
stochrsi as _stochrsi,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
trix as _trix,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
ultosc as _ultosc,
|
||||
)
|
||||
from ferro_ta._ferro_ta import (
|
||||
willr as _willr,
|
||||
)
|
||||
from ferro_ta._utils import _to_f64
|
||||
from ferro_ta.core.exceptions import _normalize_rust_error
|
||||
from ferro_ta.indicators.volatility import TRANGE
|
||||
|
||||
|
||||
def RSI(close: ArrayLike, timeperiod: int = 14) -> np.ndarray:
|
||||
"""Relative Strength Index.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of RSI values (0–100); leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _rsi(_to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def MOM(close: ArrayLike, timeperiod: int = 10) -> np.ndarray:
|
||||
"""Momentum.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 10).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of MOM values; leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _mom(_to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def ROC(close: ArrayLike, timeperiod: int = 10) -> np.ndarray:
|
||||
"""Rate of Change: ((price/prevPrice)-1)*100.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 10).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of ROC values; leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _roc(_to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def ROCP(close: ArrayLike, timeperiod: int = 10) -> np.ndarray:
|
||||
"""Rate of Change Percentage: (price-prevPrice)/prevPrice.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 10).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of ROCP values; leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _rocp(_to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def ROCR(close: ArrayLike, timeperiod: int = 10) -> np.ndarray:
|
||||
"""Rate of Change Ratio: price/prevPrice.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 10).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of ROCR values; leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _rocr(_to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def ROCR100(close: ArrayLike, timeperiod: int = 10) -> np.ndarray:
|
||||
"""Rate of Change Ratio 100 scale: (price/prevPrice)*100.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 10).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of ROCR100 values; leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _rocr100(_to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def WILLR(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> np.ndarray:
|
||||
"""Williams' %R.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of WILLR values (-100 to 0); leading ``timeperiod - 1`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _willr(_to_f64(high), _to_f64(low), _to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def AROON(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> tuple[np.ndarray, np.ndarray]:
|
||||
"""Aroon.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
tuple[numpy.ndarray, numpy.ndarray]
|
||||
``(aroondown, aroonup)`` — two arrays of equal length.
|
||||
Leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _aroon(_to_f64(high), _to_f64(low), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def AROONOSC(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> np.ndarray:
|
||||
"""Aroon Oscillator.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of AROONOSC values; leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _aroonosc(_to_f64(high), _to_f64(low), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def CCI(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> np.ndarray:
|
||||
"""Commodity Channel Index.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of CCI values; leading ``timeperiod - 1`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _cci(_to_f64(high), _to_f64(low), _to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def MFI(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
volume: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> np.ndarray:
|
||||
"""Money Flow Index.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
volume : array-like
|
||||
Sequence of volume values.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of MFI values (0–100); leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _mfi(
|
||||
_to_f64(high), _to_f64(low), _to_f64(close), _to_f64(volume), timeperiod
|
||||
)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def BOP(
|
||||
open: ArrayLike,
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
) -> np.ndarray:
|
||||
"""Balance Of Power.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
open : array-like
|
||||
Sequence of open prices.
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of BOP values (-1 to 1).
|
||||
"""
|
||||
try:
|
||||
return _bop(_to_f64(open), _to_f64(high), _to_f64(low), _to_f64(close))
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def STOCHF(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
fastk_period: int = 5,
|
||||
fastd_period: int = 3,
|
||||
) -> tuple[np.ndarray, np.ndarray]:
|
||||
"""Stochastic Fast.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
fastk_period : int, optional
|
||||
%K period (default 5).
|
||||
fastd_period : int, optional
|
||||
%D smoothing period (default 3).
|
||||
|
||||
Returns
|
||||
-------
|
||||
tuple[numpy.ndarray, numpy.ndarray]
|
||||
``(fastk, fastd)`` — two arrays of equal length.
|
||||
"""
|
||||
try:
|
||||
return _stochf(
|
||||
_to_f64(high), _to_f64(low), _to_f64(close), fastk_period, fastd_period
|
||||
)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def STOCH(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
fastk_period: int = 5,
|
||||
slowk_period: int = 3,
|
||||
slowd_period: int = 3,
|
||||
) -> tuple[np.ndarray, np.ndarray]:
|
||||
"""Stochastic.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
fastk_period : int, optional
|
||||
Fast %K period (default 5).
|
||||
slowk_period : int, optional
|
||||
Slow %K smoothing period (default 3).
|
||||
slowd_period : int, optional
|
||||
Slow %D smoothing period (default 3).
|
||||
|
||||
Returns
|
||||
-------
|
||||
tuple[numpy.ndarray, numpy.ndarray]
|
||||
``(slowk, slowd)`` — two arrays of equal length.
|
||||
"""
|
||||
try:
|
||||
return _stoch(
|
||||
_to_f64(high),
|
||||
_to_f64(low),
|
||||
_to_f64(close),
|
||||
fastk_period,
|
||||
slowk_period,
|
||||
slowd_period,
|
||||
)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def STOCHRSI(
|
||||
close: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
fastk_period: int = 5,
|
||||
fastd_period: int = 3,
|
||||
) -> tuple[np.ndarray, np.ndarray]:
|
||||
"""Stochastic Relative Strength Index.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
RSI period (default 14).
|
||||
fastk_period : int, optional
|
||||
Stochastic %K period (default 5).
|
||||
fastd_period : int, optional
|
||||
Stochastic %D smoothing period (default 3).
|
||||
|
||||
Returns
|
||||
-------
|
||||
tuple[numpy.ndarray, numpy.ndarray]
|
||||
``(fastk, fastd)`` — two arrays of equal length.
|
||||
"""
|
||||
try:
|
||||
return _stochrsi(_to_f64(close), timeperiod, fastk_period, fastd_period)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def APO(
|
||||
close: ArrayLike,
|
||||
fastperiod: int = 12,
|
||||
slowperiod: int = 26,
|
||||
) -> np.ndarray:
|
||||
"""Absolute Price Oscillator.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
fastperiod : int, optional
|
||||
Fast EMA period (default 12).
|
||||
slowperiod : int, optional
|
||||
Slow EMA period (default 26).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of APO values; leading ``slowperiod - 1`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _apo(_to_f64(close), fastperiod, slowperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def PPO(
|
||||
close: ArrayLike,
|
||||
fastperiod: int = 12,
|
||||
slowperiod: int = 26,
|
||||
signalperiod: int = 9,
|
||||
) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
|
||||
"""Percentage Price Oscillator.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
fastperiod : int, optional
|
||||
Fast EMA period (default 12).
|
||||
slowperiod : int, optional
|
||||
Slow EMA period (default 26).
|
||||
signalperiod : int, optional
|
||||
Signal EMA period (default 9).
|
||||
|
||||
Returns
|
||||
-------
|
||||
tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]
|
||||
``(ppo, signal, histogram)`` — three arrays of equal length.
|
||||
"""
|
||||
try:
|
||||
return _ppo(_to_f64(close), fastperiod, slowperiod, signalperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def CMO(close: ArrayLike, timeperiod: int = 14) -> np.ndarray:
|
||||
"""Chande Momentum Oscillator.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Number of periods (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of CMO values (-100 to 100); leading ``timeperiod`` entries are ``NaN``.
|
||||
"""
|
||||
try:
|
||||
return _cmo(_to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def PLUS_DM(high: ArrayLike, low: ArrayLike, timeperiod: int = 14) -> np.ndarray:
|
||||
"""Plus Directional Movement.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
timeperiod : int, optional
|
||||
Smoothing period (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of +DM values.
|
||||
"""
|
||||
try:
|
||||
return _plus_dm(_to_f64(high), _to_f64(low), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def MINUS_DM(high: ArrayLike, low: ArrayLike, timeperiod: int = 14) -> np.ndarray:
|
||||
"""Minus Directional Movement.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
timeperiod : int, optional
|
||||
Smoothing period (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of -DM values.
|
||||
"""
|
||||
try:
|
||||
return _minus_dm(_to_f64(high), _to_f64(low), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def PLUS_DI(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> np.ndarray:
|
||||
"""Plus Directional Indicator.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Smoothing period (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of +DI values.
|
||||
"""
|
||||
try:
|
||||
return _plus_di(_to_f64(high), _to_f64(low), _to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def MINUS_DI(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> np.ndarray:
|
||||
"""Minus Directional Indicator.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Smoothing period (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of -DI values.
|
||||
"""
|
||||
try:
|
||||
return _minus_di(_to_f64(high), _to_f64(low), _to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def DX(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> np.ndarray:
|
||||
"""Directional Movement Index.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Smoothing period (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of DX values (0–100).
|
||||
"""
|
||||
try:
|
||||
return _dx(_to_f64(high), _to_f64(low), _to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def ADX(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> np.ndarray:
|
||||
"""Average Directional Movement Index.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Smoothing period (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of ADX values (0–100).
|
||||
"""
|
||||
try:
|
||||
return _adx(_to_f64(high), _to_f64(low), _to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def ADXR(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
timeperiod: int = 14,
|
||||
) -> np.ndarray:
|
||||
"""Average Directional Movement Index Rating.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
Smoothing period (default 14).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of ADXR values (0–100).
|
||||
"""
|
||||
try:
|
||||
return _adxr(_to_f64(high), _to_f64(low), _to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def TRIX(close: ArrayLike, timeperiod: int = 30) -> np.ndarray:
|
||||
"""1-day Rate-Of-Change of a Triple Smooth EMA.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod : int, optional
|
||||
EMA period (default 30).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of TRIX values.
|
||||
"""
|
||||
try:
|
||||
return _trix(_to_f64(close), timeperiod)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
def ULTOSC(
|
||||
high: ArrayLike,
|
||||
low: ArrayLike,
|
||||
close: ArrayLike,
|
||||
timeperiod1: int = 7,
|
||||
timeperiod2: int = 14,
|
||||
timeperiod3: int = 28,
|
||||
) -> np.ndarray:
|
||||
"""Ultimate Oscillator.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
high : array-like
|
||||
Sequence of high prices.
|
||||
low : array-like
|
||||
Sequence of low prices.
|
||||
close : array-like
|
||||
Sequence of closing prices.
|
||||
timeperiod1 : int, optional
|
||||
First period (default 7).
|
||||
timeperiod2 : int, optional
|
||||
Second period (default 14).
|
||||
timeperiod3 : int, optional
|
||||
Third period (default 28).
|
||||
|
||||
Returns
|
||||
-------
|
||||
numpy.ndarray
|
||||
Array of ULTOSC values (0–100).
|
||||
"""
|
||||
try:
|
||||
return _ultosc(
|
||||
_to_f64(high),
|
||||
_to_f64(low),
|
||||
_to_f64(close),
|
||||
timeperiod1,
|
||||
timeperiod2,
|
||||
timeperiod3,
|
||||
)
|
||||
except ValueError as e:
|
||||
_normalize_rust_error(e)
|
||||
|
||||
|
||||
__all__ = [
|
||||
"RSI",
|
||||
"MOM",
|
||||
"ROC",
|
||||
"ROCP",
|
||||
"ROCR",
|
||||
"ROCR100",
|
||||
"WILLR",
|
||||
"AROON",
|
||||
"AROONOSC",
|
||||
"CCI",
|
||||
"MFI",
|
||||
"BOP",
|
||||
"STOCHF",
|
||||
"STOCH",
|
||||
"STOCHRSI",
|
||||
"APO",
|
||||
"PPO",
|
||||
"CMO",
|
||||
"PLUS_DM",
|
||||
"MINUS_DM",
|
||||
"PLUS_DI",
|
||||
"MINUS_DI",
|
||||
"DX",
|
||||
"ADX",
|
||||
"ADXR",
|
||||
"TRIX",
|
||||
"ULTOSC",
|
||||
"TRANGE",
|
||||
]
|
||||
Reference in New Issue
Block a user