mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-07-29 10:07:43 +00:00
feat: add EEO (Ehlers Elegant Oscillator) - TASC Feb 2022
This commit is contained in:
@@ -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])
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user