mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-03 11:47:44 +00:00
Rename EACP to ACP across entire codebase
- Renamed directory lib/cycles/eacp → lib/cycles/acp - Renamed class Eacp → Acp, EacpIndicator → AcpIndicator - Renamed all files: Eacp.cs → Acp.cs, Eacp.Quantower.cs → Acp.Quantower.cs, eacp.md → acp.md, eacp.pine → acp.pine, and all test files - Updated display names: EACP → ACP in Quantower Name/ShortName properties - Updated all documentation surfaces: _sidebar.md, lib/_index.md, lib/cycles/_index.md, docs/indicators.md, docs/validation.md, docs/pinescript.md, lib/cycles/cg/cg.md cross-reference - Updated Python bridge: qtl_eacp → qtl_acp entry point, _bridge.py, cycles.py wrapper, SPEC.md, test_shapes.py, run_all_exported - All 83 tests pass (38 AcpTests + 22 AcpValidationTests + 23 AcpIndicatorTests) - Build: 0 warnings, 0 errors across all projects
This commit is contained in:
+1
-1
@@ -974,7 +974,7 @@ All channel indicators output 3 spans: upper, middle, lower (Pattern I).
|
||||
| ccyc | `Ccyc` | A | alpha |
|
||||
| cg | `Cg` | A | period |
|
||||
| dsp | `Dsp` | A | period |
|
||||
| eacp | `Eacp` | A | minPeriod, maxPeriod, avgLength, enhance |
|
||||
| acp | `Acp` | A | minPeriod, maxPeriod, avgLength, enhance |
|
||||
| ebsw | `Ebsw` | A | hpLength, ssfLength |
|
||||
| homod | `Homod` | A | minPeriod, maxPeriod |
|
||||
| ht_dcperiod | `HtDcperiod` | A | — |
|
||||
|
||||
@@ -564,7 +564,7 @@ HAS_CG = _bind("qtl_cg", [_dp, _ci, _dp, _ci])
|
||||
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_EACP = _bind("qtl_eacp", [_dp, _ci, _dp, _ci, _ci, _ci, _ci])
|
||||
HAS_ACP = _bind("qtl_acp", [_dp, _ci, _dp, _ci, _ci, _ci, _ci])
|
||||
|
||||
# ── Numerics (Exports.cs — manual) ──
|
||||
HAS_CHANGE = _bind("qtl_change", [_dp, _ci, _dp, _ci])
|
||||
|
||||
@@ -20,7 +20,7 @@ __all__ = [
|
||||
"dsp",
|
||||
"ccor",
|
||||
"ebsw",
|
||||
"eacp",
|
||||
"acp",
|
||||
]
|
||||
|
||||
|
||||
@@ -142,11 +142,11 @@ def ebsw(close: object, hp_length: int = 40, ssf_length: int = 10,
|
||||
return _wrap(dst, idx, f"EBSW_{hp_length}", "cycles", offset)
|
||||
|
||||
|
||||
def eacp(close: object, min_period: int = 8, max_period: int = 48,
|
||||
avg_length: int = 3, enhance: int = 1,
|
||||
offset: int = 0, **kwargs) -> object:
|
||||
def acp(close: object, min_period: int = 8, max_period: int = 48,
|
||||
avg_length: int = 3, enhance: int = 1,
|
||||
offset: int = 0, **kwargs) -> object:
|
||||
"""Ehlers Autocorrelation Periodogram."""
|
||||
offset = int(offset)
|
||||
src, idx = _arr(close); n = len(src); dst = _out(n)
|
||||
_check(_lib.qtl_eacp(_ptr(src), n, _ptr(dst), int(min_period), int(max_period), int(avg_length), int(enhance)))
|
||||
return _wrap(dst, idx, f"EACP_{min_period}_{max_period}", "cycles", offset)
|
||||
_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)
|
||||
|
||||
@@ -1465,13 +1465,13 @@ public static unsafe partial class Exports
|
||||
catch { return StatusCodes.QTL_ERR_INTERNAL; }
|
||||
}
|
||||
|
||||
// Eacp: (int minPeriod, int maxPeriod, int avgLength, bool enhance → int)
|
||||
[UnmanagedCallersOnly(EntryPoint = "qtl_eacp")]
|
||||
public static int QtlEacp(double* src, int n, double* dst, int minPeriod, int maxPeriod, int avgLength, int enhance)
|
||||
// Acp: (int minPeriod, int maxPeriod, int avgLength, bool enhance → int)
|
||||
[UnmanagedCallersOnly(EntryPoint = "qtl_acp")]
|
||||
public static int QtlAcp(double* src, int n, double* dst, int minPeriod, int maxPeriod, int avgLength, int enhance)
|
||||
{
|
||||
int v = Chk1(src, dst, n); if (v != 0) return v;
|
||||
v = ChkPeriod(minPeriod); if (v != 0) return v;
|
||||
try { Eacp.Batch(Src(src, n), Dst(dst, n), minPeriod, maxPeriod, avgLength, enhance != 0); return StatusCodes.QTL_OK; }
|
||||
try { Acp.Batch(Src(src, n), Dst(dst, n), minPeriod, maxPeriod, avgLength, enhance != 0); return StatusCodes.QTL_OK; }
|
||||
catch { return StatusCodes.QTL_ERR_INTERNAL; }
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
| `dwma` | ⏭️ | no comparable pandas-ta equivalent |
|
||||
| `dwt` | ⏭️ | no comparable pandas-ta equivalent |
|
||||
| `dymoi` | ⏭️ | no comparable pandas-ta equivalent |
|
||||
| `eacp` | ⏭️ | no comparable pandas-ta equivalent |
|
||||
| `acp` | ⏭️ | no comparable pandas-ta equivalent |
|
||||
| `ebsw` | ⚠️ | max_diff=1.846e+00, n=100 |
|
||||
| `edcf` | ⏭️ | no comparable pandas-ta equivalent |
|
||||
| `efi` | ✔️ | max_diff=3.411e-13, n=100 |
|
||||
|
||||
@@ -103,7 +103,7 @@ NO_PTA_EQUIVALENT: set[str] = {
|
||||
"bwma", "ccor", "ccv", "ccyc", "cfitz", "change", "cheby1", "cheby2",
|
||||
"cointegration", "conv", "coral", "correl", "covariance", "crma",
|
||||
"cv", "cvi", "cwt", "deco", "decycler", "dem", "dema_alpha", "dosc",
|
||||
"dsma", "dsp", "dwma", "dwt", "dymi", "eacp", "edcf", "elliptic",
|
||||
"dsma", "dsp", "dwma", "dwt", "dymi", "acp", "edcf", "elliptic",
|
||||
"ema_alpha", "etherm", "evwma", "ewma", "expdist", "exptrans",
|
||||
"fisher04", "gdema", "hanma", "hema", "kri", "lema", "lsma", "mae",
|
||||
"mape", "mse", "parzen", "pvd", "rain", "rmse", "sgma", "sinema",
|
||||
|
||||
@@ -56,7 +56,7 @@ MULTI_PARAM = [
|
||||
("baxterking", {"length": 12, "min_period": 6, "max_period": 32}),
|
||||
("cfitz", {"length": 6, "bw_period": 32}),
|
||||
("ebsw", {"hp_length": 40, "ssf_length": 10}),
|
||||
("eacp", {"min_period": 8, "max_period": 48, "avg_length": 3, "enhance": 1}),
|
||||
("acp", {"min_period": 8, "max_period": 48, "avg_length": 3, "enhance": 1}),
|
||||
("betadist", {"length": 50, "alpha": 2.0, "beta": 2.0}),
|
||||
("expdist", {"length": 50, "lam": 3.0}),
|
||||
("binomdist", {"length": 50, "trials": 20, "threshold": 10}),
|
||||
|
||||
Reference in New Issue
Block a user