feat: add EEO (Ehlers Elegant Oscillator) - TASC Feb 2022

This commit is contained in:
Miha Kralj
2026-03-17 14:18:57 -07:00
parent b9e6a70890
commit f7dcc20f7c
14 changed files with 1250 additions and 0 deletions
+1
View File
@@ -451,6 +451,7 @@ HAS_DOSC = _bind("qtl_dosc", [_dp, _ci, _dp, _ci, _ci, _ci, _ci])
HAS_DSO = _bind("qtl_dso", [_dp, _ci, _dp, _ci])
HAS_RSIH = _bind("qtl_rsih", [_dp, _ci, _dp, _ci])
HAS_MADH = _bind("qtl_madh", [_dp, _ci, _dp, _ci, _ci])
HAS_EEO = _bind("qtl_eeo", [_dp, _ci, _dp, _ci])
HAS_DYMI = _bind("qtl_dymi", [_dp, _ci, _dp, _ci, _ci, _ci, _ci, _ci])
HAS_CRSI = _bind("qtl_crsi", [_dp, _ci, _dp, _ci, _ci, _ci])
HAS_BBB = _bind("qtl_bbb", [_dp, _ci, _dp, _ci, _cd])
+8
View File
@@ -573,6 +573,14 @@ def madh(close: object, shortLength: int = 8, dominantCycle: int = 27, offset: i
return _wrap(dst, idx, f"MADH_{shortLength}_{dominantCycle}", "oscillators", int(offset))
def eeo(close: object, bandEdge: int = 20, offset: int = 0, **kwargs) -> object:
"""Ehlers Elegant Oscillator."""
bandEdge = int(kwargs.get("length", bandEdge)); offset = int(offset)
src, idx = _arr(close); n = len(src); dst = _out(n)
_check(_lib.qtl_eeo(_ptr(src), n, _ptr(dst), bandEdge))
return _wrap(dst, idx, f"EEO_{bandEdge}", "oscillators", offset)
def dymi(close: object, base_period: int = 14, short_period: int = 5,
long_period: int = 10, min_period: int = 3, max_period: int = 30,
offset: int = 0, **kwargs) -> object:
+10
View File
@@ -448,6 +448,16 @@ public static unsafe partial class Exports
catch { return StatusCodes.QTL_ERR_INTERNAL; }
}
// Eeo: Pattern A (src, out, int bandEdge)
[UnmanagedCallersOnly(EntryPoint = "qtl_eeo")]
public static int QtlEeo(double* src, int n, double* dst, int bandEdge)
{
int v = Chk1(src, dst, n); if (v != 0) return v;
if (bandEdge < 2) return StatusCodes.QTL_ERR_INVALID_PARAM;
try { Eeo.Batch(Src(src, n), Dst(dst, n), bandEdge); return StatusCodes.QTL_OK; }
catch { return StatusCodes.QTL_ERR_INTERNAL; }
}
// Dymi: Pattern A (src, out, int p1..p5)
[UnmanagedCallersOnly(EntryPoint = "qtl_dymi")]
public static int QtlDymi(double* src, int n, double* dst, int p1, int p2, int p3, int p4, int p5)