Files
QuanTAlib/python/quantalib/numerics.py
T

331 lines
11 KiB
Python

"""quantalib numerics indicators.
Auto-generated — DO NOT EDIT.
"""
from __future__ import annotations
from ._helpers import _arr, _ptr, _out, _wrap, _wrap_multi, _check, _lib
__all__ = [
"accel",
"fdist",
"fft",
"gammadist",
"highest",
"ifft",
"jerk",
"lineartrans",
"lognormdist",
"logtrans",
"lowest",
"normalize",
"normdist",
"poissondist",
"relu",
"sigmoid",
"slope",
"sqrttrans",
"tdist",
"weibulldist",
"change",
"exptrans",
"betadist",
"expdist",
"binomdist",
"cwt",
"dwt",
]
def accel(close: object, offset: int = 0, **kwargs) -> object:
"""Acceleration."""
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_accel(_ptr(src), _ptr(output), n))
return _wrap(output, idx, "ACCEL", "numerics", offset)
def fdist(close: object, d1: int = 1, d2: int = 1, period: int = 14, offset: int = 0, **kwargs) -> object:
"""F-Distribution."""
d1 = int(d1)
d2 = int(d2)
period = int(kwargs.get("length", period))
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_fdist(_ptr(src), _ptr(output), n, d1, d2, period))
return _wrap(output, idx, f"FDIST_{period}", "numerics", offset)
def fft(close: object, windowSize: int = 256, minPeriod: int = 6, maxPeriod: int = 48, offset: int = 0, **kwargs) -> object:
"""Fast Fourier Transform."""
windowSize = int(windowSize)
minPeriod = int(minPeriod)
maxPeriod = int(maxPeriod)
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_fft(_ptr(src), _ptr(output), n, windowSize, minPeriod, maxPeriod))
return _wrap(output, idx, f"FFT_{minPeriod}", "numerics", offset)
def gammadist(close: object, alpha: float = 2.0, beta: float = 1.0, period: int = 14, offset: int = 0, **kwargs) -> object:
"""Gamma Distribution."""
alpha = float(alpha)
beta = float(beta)
period = int(kwargs.get("length", period))
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_gammadist(_ptr(src), _ptr(output), n, alpha, beta, period))
return _wrap(output, idx, f"GAMMADIST_{period}", "numerics", offset)
def highest(close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
"""Highest Value."""
period = int(kwargs.get("length", period))
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_highest(_ptr(src), _ptr(output), n, period))
return _wrap(output, idx, f"HIGHEST_{period}", "numerics", offset)
def ifft(close: object, windowSize: int = 256, numHarmonics: int = 10, offset: int = 0, **kwargs) -> object:
"""Inverse FFT."""
windowSize = int(windowSize)
numHarmonics = int(numHarmonics)
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_ifft(_ptr(src), _ptr(output), n, windowSize, numHarmonics))
return _wrap(output, idx, "IFFT", "numerics", offset)
def jerk(close: object, offset: int = 0, **kwargs) -> object:
"""Jerk (3rd derivative)."""
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_jerk(_ptr(src), _ptr(output), n))
return _wrap(output, idx, "JERK", "numerics", offset)
def lineartrans(close: object, slope: float = 1.0, intercept: float = 0.0, offset: int = 0, **kwargs) -> object:
"""Linear Transform."""
slope = float(slope)
intercept = float(intercept)
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_lineartrans(_ptr(src), _ptr(output), n, slope, intercept))
return _wrap(output, idx, "LINEARTRANS", "numerics", offset)
def lognormdist(close: object, mu: float = 0.0, sigma: float = 1.0, period: int = 14, offset: int = 0, **kwargs) -> object:
"""Log-Normal Distribution."""
mu = float(mu)
sigma = float(sigma)
period = int(kwargs.get("length", period))
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_lognormdist(_ptr(src), _ptr(output), n, mu, sigma, period))
return _wrap(output, idx, f"LOGNORMDIST_{period}", "numerics", offset)
def logtrans(close: object, offset: int = 0, **kwargs) -> object:
"""Logarithmic Transform."""
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_logtrans(_ptr(src), _ptr(output), n))
return _wrap(output, idx, "LOGTRANS", "numerics", offset)
def lowest(close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
"""Lowest Value."""
period = int(kwargs.get("length", period))
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_lowest(_ptr(src), _ptr(output), n, period))
return _wrap(output, idx, f"LOWEST_{period}", "numerics", offset)
def normalize(close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
"""Normalization."""
period = int(kwargs.get("length", period))
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_normalize(_ptr(src), _ptr(output), n, period))
return _wrap(output, idx, f"NORMALIZE_{period}", "numerics", offset)
def normdist(close: object, mu: float = 0.0, sigma: float = 1.0, period: int = 14, offset: int = 0, **kwargs) -> object:
"""Normal Distribution."""
mu = float(mu)
sigma = float(sigma)
period = int(kwargs.get("length", period))
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_normdist(_ptr(src), _ptr(output), n, mu, sigma, period))
return _wrap(output, idx, f"NORMDIST_{period}", "numerics", offset)
def poissondist(close: object, lam: float = 1.0, period: int = 14, threshold: int = 5, offset: int = 0, **kwargs) -> object:
"""Poisson Distribution."""
lam = float(lam)
period = int(kwargs.get("length", period))
threshold = int(threshold)
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_poissondist(_ptr(src), _ptr(output), n, lam, period, threshold))
return _wrap(output, idx, f"POISSONDIST_{period}", "numerics", offset)
def relu(close: object, offset: int = 0, **kwargs) -> object:
"""ReLU Activation."""
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_relu(_ptr(src), _ptr(output), n))
return _wrap(output, idx, "RELU", "numerics", offset)
def sigmoid(close: object, k: float = 1.0, x0: float = 0.0, offset: int = 0, **kwargs) -> object:
"""Sigmoid Transform."""
k = float(k)
x0 = float(x0)
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_sigmoid(_ptr(src), _ptr(output), n, k, x0))
return _wrap(output, idx, "SIGMOID", "numerics", offset)
def slope(close: object, offset: int = 0, **kwargs) -> object:
"""Slope (1st derivative)."""
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_slope(_ptr(src), _ptr(output), n))
return _wrap(output, idx, "SLOPE", "numerics", offset)
def sqrttrans(close: object, offset: int = 0, **kwargs) -> object:
"""Square Root Transform."""
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_sqrttrans(_ptr(src), _ptr(output), n))
return _wrap(output, idx, "SQRTTRANS", "numerics", offset)
def tdist(close: object, nu: int = 10, period: int = 14, offset: int = 0, **kwargs) -> object:
"""Student's t-Distribution."""
nu = int(nu)
period = int(kwargs.get("length", period))
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_tdist(_ptr(src), _ptr(output), n, nu, period))
return _wrap(output, idx, f"TDIST_{period}", "numerics", offset)
def weibulldist(close: object, k: float = 1.5, lam: float = 1.0, period: int = 14, offset: int = 0, **kwargs) -> object:
"""Weibull Distribution."""
k = float(k)
lam = float(lam)
period = int(kwargs.get("length", period))
offset = int(offset)
src, idx = _arr(close)
n = len(src)
output = _out(n)
_check(_lib.qtl_weibulldist(_ptr(src), _ptr(output), n, k, lam, period))
return _wrap(output, idx, f"WEIBULLDIST_{period}", "numerics", offset)
def change(close: object, length: int = 1, offset: int = 0, **kwargs) -> object:
"""Price Change."""
length = int(length); offset = int(offset)
src, idx = _arr(close); n = len(src); dst = _out(n)
_check(_lib.qtl_change(_ptr(src), n, _ptr(dst), length))
return _wrap(dst, idx, f"CHANGE_{length}", "numerics", offset)
def exptrans(close: object, offset: int = 0, **kwargs) -> object:
"""Exponential Transform."""
offset = int(offset)
src, idx = _arr(close); n = len(src); dst = _out(n)
_check(_lib.qtl_exptrans(_ptr(src), n, _ptr(dst)))
return _wrap(dst, idx, "EXPTRANS", "numerics", offset)
def betadist(close: object, length: int = 50, alpha: float = 2.0,
beta: float = 2.0, offset: int = 0, **kwargs) -> object:
"""Beta Distribution."""
length = int(length); offset = int(offset)
src, idx = _arr(close); n = len(src); dst = _out(n)
_check(_lib.qtl_betadist(_ptr(src), n, _ptr(dst), length, float(alpha), float(beta)))
return _wrap(dst, idx, f"BETADIST_{length}", "numerics", offset)
def expdist(close: object, length: int = 50, lam: float = 3.0,
offset: int = 0, **kwargs) -> object:
"""Exponential Distribution."""
length = int(length); offset = int(offset)
src, idx = _arr(close); n = len(src); dst = _out(n)
_check(_lib.qtl_expdist(_ptr(src), n, _ptr(dst), length, float(lam)))
return _wrap(dst, idx, f"EXPDIST_{length}", "numerics", offset)
def binomdist(close: object, length: int = 50, trials: int = 20,
threshold: int = 10, offset: int = 0, **kwargs) -> object:
"""Binomial Distribution."""
length = int(length); offset = int(offset)
src, idx = _arr(close); n = len(src); dst = _out(n)
_check(_lib.qtl_binomdist(_ptr(src), n, _ptr(dst), length, int(trials), int(threshold)))
return _wrap(dst, idx, f"BINOMDIST_{length}", "numerics", offset)
def cwt(close: object, scale: float = 10.0, omega: float = 6.0,
offset: int = 0, **kwargs) -> object:
"""Continuous Wavelet Transform."""
offset = int(offset)
src, idx = _arr(close); n = len(src); dst = _out(n)
_check(_lib.qtl_cwt(_ptr(src), n, _ptr(dst), float(scale), float(omega)))
return _wrap(dst, idx, "CWT", "numerics", offset)
def dwt(close: object, length: int = 4, levels: int = 0,
offset: int = 0, **kwargs) -> object:
"""Discrete Wavelet Transform."""
length = int(length); levels = int(levels); offset = int(offset)
src, idx = _arr(close); n = len(src); dst = _out(n)
_check(_lib.qtl_dwt(_ptr(src), n, _ptr(dst), length, levels))
return _wrap(dst, idx, f"DWT_{length}", "numerics", offset)