mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-07-28 17:57:45 +00:00
296 lines
12 KiB
Python
296 lines
12 KiB
Python
"""quantalib dynamics indicators.
|
|
|
|
Auto-generated — DO NOT EDIT.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from ._helpers import _arr, _ptr, _out, _wrap, _wrap_multi, _check, _lib
|
|
|
|
|
|
__all__ = [
|
|
"adx",
|
|
"adxr",
|
|
"alligator",
|
|
"amat",
|
|
"aroon",
|
|
"aroonosc",
|
|
"chop",
|
|
"dmx",
|
|
"dx",
|
|
"ghla",
|
|
"ht_trendmode",
|
|
"ichimoku",
|
|
"impulse",
|
|
"pfe",
|
|
"qstick",
|
|
"ravi",
|
|
"supertrend",
|
|
"ttm_squeeze",
|
|
"ttm_trend",
|
|
"vhf",
|
|
"vortex",
|
|
]
|
|
|
|
|
|
def adx(high: object, low: object, close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""Average Directional Index."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
h, idx = _arr(high); l, _ = _arr(low); c, _ = _arr(close)
|
|
n = len(h)
|
|
destination = _out(n)
|
|
_check(_lib.qtl_adx(_ptr(h), _ptr(l), _ptr(c), period, n, _ptr(destination)))
|
|
return _wrap(destination, idx, f"ADX_{period}", "dynamics", offset)
|
|
|
|
|
|
def adxr(high: object, low: object, close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""ADX Rating."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
h, idx = _arr(high); l, _ = _arr(low); c, _ = _arr(close)
|
|
n = len(h)
|
|
destination = _out(n)
|
|
_check(_lib.qtl_adxr(_ptr(h), _ptr(l), _ptr(c), period, n, _ptr(destination)))
|
|
return _wrap(destination, idx, f"ADXR_{period}", "dynamics", offset)
|
|
|
|
|
|
def alligator(open: object, high: object, low: object, close: object, volume: object, jawPeriod: int = 13, jawOffset: int = 8, teethPeriod: int = 8, teethOffset: int = 5, lipsPeriod: int = 5, lipsOffset: int = 3, offset: int = 0, **kwargs) -> object:
|
|
"""Williams Alligator."""
|
|
jawPeriod = int(jawPeriod)
|
|
jawOffset = int(jawOffset)
|
|
teethPeriod = int(teethPeriod)
|
|
teethOffset = int(teethOffset)
|
|
lipsPeriod = int(lipsPeriod)
|
|
lipsOffset = int(lipsOffset)
|
|
offset = int(offset)
|
|
o, idx = _arr(open); h, _ = _arr(high); l, _ = _arr(low)
|
|
c, _ = _arr(close); v, _ = _arr(volume)
|
|
n = len(o)
|
|
dst = _out(n)
|
|
_check(_lib.qtl_alligator(_ptr(o), _ptr(h), _ptr(l), _ptr(c), _ptr(v), jawPeriod, jawOffset, teethPeriod, teethOffset, lipsPeriod, lipsOffset, n, _ptr(dst)))
|
|
return _wrap(dst, idx, f"ALLIGATOR_{jawPeriod}", "dynamics", offset)
|
|
|
|
|
|
def amat(close: object, fastPeriod: int = 12, slowPeriod: int = 26, offset: int = 0, **kwargs) -> object:
|
|
"""Archer Moving Average Trends."""
|
|
fastPeriod = int(fastPeriod)
|
|
slowPeriod = int(slowPeriod)
|
|
offset = int(offset)
|
|
src, idx = _arr(close)
|
|
n = len(src)
|
|
trend = _out(n)
|
|
strength = _out(n)
|
|
_check(_lib.qtl_amat(_ptr(src), _ptr(trend), _ptr(strength), n, fastPeriod, slowPeriod))
|
|
return _wrap_multi({"trend": trend, "strength": strength}, idx, "dynamics", offset)
|
|
|
|
|
|
def aroon(high: object, low: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""Aroon."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
h, idx = _arr(high); l, _ = _arr(low)
|
|
n = len(h)
|
|
destination = _out(n)
|
|
_check(_lib.qtl_aroon(_ptr(h), _ptr(l), period, n, _ptr(destination)))
|
|
return _wrap(destination, idx, f"AROON_{period}", "dynamics", offset)
|
|
|
|
|
|
def aroonosc(high: object, low: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""Aroon Oscillator."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
h, idx = _arr(high); l, _ = _arr(low)
|
|
n = len(h)
|
|
destination = _out(n)
|
|
_check(_lib.qtl_aroonosc(_ptr(h), _ptr(l), period, n, _ptr(destination)))
|
|
return _wrap(destination, idx, f"AROONOSC_{period}", "dynamics", offset)
|
|
|
|
|
|
def chop(open: object, high: object, low: object, close: object, volume: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""Choppiness Index."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
o, idx = _arr(open); h, _ = _arr(high); l, _ = _arr(low)
|
|
c, _ = _arr(close); v, _ = _arr(volume)
|
|
n = len(o)
|
|
dst = _out(n)
|
|
_check(_lib.qtl_chop(_ptr(o), _ptr(h), _ptr(l), _ptr(c), _ptr(v), period, n, _ptr(dst)))
|
|
return _wrap(dst, idx, f"CHOP_{period}", "dynamics", offset)
|
|
|
|
|
|
def dmx(high: object, low: object, close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""Directional Movement Extended."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
h, idx = _arr(high); l, _ = _arr(low); c, _ = _arr(close)
|
|
n = len(h)
|
|
destination = _out(n)
|
|
_check(_lib.qtl_dmx(_ptr(h), _ptr(l), _ptr(c), period, n, _ptr(destination)))
|
|
return _wrap(destination, idx, f"DMX_{period}", "dynamics", offset)
|
|
|
|
|
|
def dx(high: object, low: object, close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""Directional Movement Index."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
h, idx = _arr(high); l, _ = _arr(low); c, _ = _arr(close)
|
|
n = len(h)
|
|
destination = _out(n)
|
|
_check(_lib.qtl_dx(_ptr(h), _ptr(l), _ptr(c), period, n, _ptr(destination)))
|
|
return _wrap(destination, idx, f"DX_{period}", "dynamics", offset)
|
|
|
|
|
|
def ghla(high: object, low: object, close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""Gann Hi-Lo Activator."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
h, idx = _arr(high); l, _ = _arr(low); c, _ = _arr(close)
|
|
n = len(h)
|
|
output = _out(n)
|
|
_check(_lib.qtl_ghla(_ptr(h), _ptr(l), _ptr(c), _ptr(output), n, period))
|
|
return _wrap(output, idx, f"GHLA_{period}", "dynamics", offset)
|
|
|
|
|
|
def ht_trendmode(close: object, offset: int = 0, **kwargs) -> object:
|
|
"""Hilbert Transform Trend Mode."""
|
|
offset = int(offset)
|
|
src, idx = _arr(close)
|
|
n = len(src)
|
|
output = _out(n)
|
|
_check(_lib.qtl_httrendmode(_ptr(src), _ptr(output), n))
|
|
return _wrap(output, idx, "HT_TRENDMODE", "dynamics", offset)
|
|
|
|
|
|
def ichimoku(open: object, high: object, low: object, close: object, volume: object, tenkanPeriod: int = 9, kijunPeriod: int = 26, senkouBPeriod: int = 52, displacement: int = 26, offset: int = 0, **kwargs) -> object:
|
|
"""Ichimoku Cloud."""
|
|
tenkanPeriod = int(tenkanPeriod)
|
|
kijunPeriod = int(kijunPeriod)
|
|
senkouBPeriod = int(senkouBPeriod)
|
|
displacement = int(displacement)
|
|
offset = int(offset)
|
|
o, idx = _arr(open); h, _ = _arr(high); l, _ = _arr(low)
|
|
c, _ = _arr(close); v, _ = _arr(volume)
|
|
n = len(o)
|
|
dstTenkan = _out(n)
|
|
dstKijun = _out(n)
|
|
dstSenkouA = _out(n)
|
|
dstSenkouB = _out(n)
|
|
dstChikou = _out(n)
|
|
_check(_lib.qtl_ichimoku(_ptr(o), _ptr(h), _ptr(l), _ptr(c), _ptr(v), tenkanPeriod, kijunPeriod, senkouBPeriod, displacement, n, _ptr(dstTenkan), _ptr(dstKijun), _ptr(dstSenkouA), _ptr(dstSenkouB), _ptr(dstChikou)))
|
|
return _wrap_multi({"dstTenkan": dstTenkan, "dstKijun": dstKijun, "dstSenkouA": dstSenkouA, "dstSenkouB": dstSenkouB, "dstChikou": dstChikou}, idx, "dynamics", offset)
|
|
|
|
|
|
def impulse(close: object, emaPeriod: int = 13, macdFast: int = 12, macdSlow: int = 26, macdSignal: int = 9, offset: int = 0, **kwargs) -> object:
|
|
"""Elder Impulse System."""
|
|
emaPeriod = int(emaPeriod)
|
|
macdFast = int(macdFast)
|
|
macdSlow = int(macdSlow)
|
|
macdSignal = int(macdSignal)
|
|
offset = int(offset)
|
|
src, idx = _arr(close)
|
|
n = len(src)
|
|
dst = _out(n)
|
|
_check(_lib.qtl_impulse(_ptr(src), emaPeriod, macdFast, macdSlow, macdSignal, n, _ptr(dst)))
|
|
return _wrap(dst, idx, f"IMPULSE_{emaPeriod}", "dynamics", offset)
|
|
|
|
|
|
def pfe(close: object, period: int = 14, smoothPeriod: int = 5, offset: int = 0, **kwargs) -> object:
|
|
"""Polarized Fractal Efficiency."""
|
|
period = int(kwargs.get("length", period))
|
|
smoothPeriod = int(smoothPeriod)
|
|
offset = int(offset)
|
|
src, idx = _arr(close)
|
|
n = len(src)
|
|
output = _out(n)
|
|
_check(_lib.qtl_pfe(_ptr(src), _ptr(output), n, period, smoothPeriod))
|
|
return _wrap(output, idx, f"PFE_{period}", "dynamics", offset)
|
|
|
|
|
|
def qstick(open: object, high: object, low: object, close: object, volume: object, period: int = 14, useEma: int = 0, offset: int = 0, **kwargs) -> object:
|
|
"""QStick."""
|
|
period = int(kwargs.get("length", period))
|
|
useEma = int(useEma)
|
|
offset = int(offset)
|
|
o, idx = _arr(open); h, _ = _arr(high); l, _ = _arr(low)
|
|
c, _ = _arr(close); v, _ = _arr(volume)
|
|
n = len(o)
|
|
dst = _out(n)
|
|
_check(_lib.qtl_qstick(_ptr(o), _ptr(h), _ptr(l), _ptr(c), _ptr(v), period, useEma, n, _ptr(dst)))
|
|
return _wrap(dst, idx, f"QSTICK_{period}", "dynamics", offset)
|
|
|
|
|
|
def ravi(close: object, shortPeriod: int = 12, longPeriod: int = 26, offset: int = 0, **kwargs) -> object:
|
|
"""Range Action Verification Index."""
|
|
shortPeriod = int(shortPeriod)
|
|
longPeriod = int(longPeriod)
|
|
offset = int(offset)
|
|
src, idx = _arr(close)
|
|
n = len(src)
|
|
output = _out(n)
|
|
_check(_lib.qtl_ravi(_ptr(src), _ptr(output), n, shortPeriod, longPeriod))
|
|
return _wrap(output, idx, f"RAVI_{shortPeriod}", "dynamics", offset)
|
|
|
|
|
|
def supertrend(open: object, high: object, low: object, close: object, volume: object, period: int = 14, multiplier: float = 2.0, offset: int = 0, **kwargs) -> object:
|
|
"""SuperTrend."""
|
|
period = int(kwargs.get("length", period))
|
|
multiplier = float(multiplier)
|
|
offset = int(offset)
|
|
o, idx = _arr(open); h, _ = _arr(high); l, _ = _arr(low)
|
|
c, _ = _arr(close); v, _ = _arr(volume)
|
|
n = len(o)
|
|
dst = _out(n)
|
|
_check(_lib.qtl_super(_ptr(o), _ptr(h), _ptr(l), _ptr(c), _ptr(v), period, multiplier, n, _ptr(dst)))
|
|
return _wrap(dst, idx, f"SUPER_{period}", "dynamics", offset)
|
|
|
|
|
|
def ttm_squeeze(open: object, high: object, low: object, close: object, volume: object, bbPeriod: int = 20, bbMult: float = 2.0, kcPeriod: int = 10, kcMult: float = 1.5, momPeriod: int = 12, offset: int = 0, **kwargs) -> object:
|
|
"""TTM Squeeze."""
|
|
bbPeriod = int(bbPeriod)
|
|
bbMult = float(bbMult)
|
|
kcPeriod = int(kcPeriod)
|
|
kcMult = float(kcMult)
|
|
momPeriod = int(momPeriod)
|
|
offset = int(offset)
|
|
o, idx = _arr(open); h, _ = _arr(high); l, _ = _arr(low)
|
|
c, _ = _arr(close); v, _ = _arr(volume)
|
|
n = len(o)
|
|
dst = _out(n)
|
|
_check(_lib.qtl_ttmsqueeze(_ptr(o), _ptr(h), _ptr(l), _ptr(c), _ptr(v), bbPeriod, bbMult, kcPeriod, kcMult, momPeriod, n, _ptr(dst)))
|
|
return _wrap(dst, idx, f"TTM_SQUEEZE_{bbPeriod}", "dynamics", offset)
|
|
|
|
|
|
def ttm_trend(open: object, high: object, low: object, close: object, volume: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""TTM Trend."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
o, idx = _arr(open); h, _ = _arr(high); l, _ = _arr(low)
|
|
c, _ = _arr(close); v, _ = _arr(volume)
|
|
n = len(o)
|
|
dst = _out(n)
|
|
_check(_lib.qtl_ttmtrend(_ptr(o), _ptr(h), _ptr(l), _ptr(c), _ptr(v), period, n, _ptr(dst)))
|
|
return _wrap(dst, idx, f"TTM_TREND_{period}", "dynamics", offset)
|
|
|
|
|
|
def vhf(close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""Vertical Horizontal Filter."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
src, idx = _arr(close)
|
|
n = len(src)
|
|
output = _out(n)
|
|
_check(_lib.qtl_vhf(_ptr(src), _ptr(output), n, period))
|
|
return _wrap(output, idx, f"VHF_{period}", "dynamics", offset)
|
|
|
|
|
|
def vortex(high: object, low: object, close: object, period: int = 14, offset: int = 0, **kwargs) -> object:
|
|
"""Vortex Indicator."""
|
|
period = int(kwargs.get("length", period))
|
|
offset = int(offset)
|
|
h, idx = _arr(high); l, _ = _arr(low); c, _ = _arr(close)
|
|
n = len(h)
|
|
viPlus = _out(n)
|
|
viMinus = _out(n)
|
|
_check(_lib.qtl_vortex(_ptr(h), _ptr(l), _ptr(c), period, _ptr(viPlus), n, _ptr(viMinus)))
|
|
return _wrap_multi({"viPlus": viPlus, "viMinus": viMinus}, idx, "dynamics", offset)
|