mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-06 04:57:44 +00:00
feat(cycles): add AMFM - Ehlers AM Detector / FM Demodulator
This commit is contained in:
@@ -571,6 +571,7 @@ HAS_DSP = _bind("qtl_dsp", [_dp, _ci, _dp, _ci])
|
||||
HAS_CCOR = _bind("qtl_ccor", [_dp, _ci, _dp, _ci, _cd])
|
||||
HAS_EBSW = _bind("qtl_ebsw", [_dp, _ci, _dp, _ci, _ci])
|
||||
HAS_ACP = _bind("qtl_acp", [_dp, _ci, _dp, _ci, _ci, _ci, _ci])
|
||||
HAS_AMFM = _bind("qtl_amfm", [_dp, _dp, _ci, _dp, _dp, _ci])
|
||||
|
||||
# ── Numerics (Exports.cs — manual) ──
|
||||
HAS_CHANGE = _bind("qtl_change", [_dp, _ci, _dp, _ci])
|
||||
|
||||
@@ -21,6 +21,7 @@ __all__ = [
|
||||
"ccor",
|
||||
"ebsw",
|
||||
"acp",
|
||||
"amfm",
|
||||
]
|
||||
|
||||
|
||||
@@ -150,3 +151,13 @@ def acp(close: object, min_period: int = 8, max_period: int = 48,
|
||||
src, idx = _arr(close); n = len(src); dst = _out(n)
|
||||
_check(_lib.qtl_acp(_ptr(src), n, _ptr(dst), int(min_period), int(max_period), int(avg_length), int(enhance)))
|
||||
return _wrap(dst, idx, f"ACP_{min_period}_{max_period}", "cycles", offset)
|
||||
|
||||
|
||||
def amfm(open: object, close: object, period: int = 30,
|
||||
offset: int = 0, **kwargs) -> object:
|
||||
"""Ehlers AM Detector / FM Demodulator."""
|
||||
period = int(kwargs.get("length", period)); offset = int(offset)
|
||||
o, idx = _arr(open); c, _ = _arr(close)
|
||||
n = len(o); fm = _out(n); am = _out(n)
|
||||
_check(_lib.qtl_amfm(_ptr(o), _ptr(c), n, _ptr(fm), _ptr(am), period))
|
||||
return _wrap_multi({f"FM_{period}": fm, f"AM_{period}": am}, idx, "cycles", offset)
|
||||
|
||||
Reference in New Issue
Block a user