Miha Kralj
4552d8529d
feat: add RSIH (Ehlers Hann-Windowed RSI) indicator
2026-03-17 12:40:55 -07:00
Miha Kralj
7db48e2418
feat(oscillators): add DSO - Ehlers Deviation-Scaled Oscillator
...
Implement DSO (TASC Oct 2018) with SSF 2-pole filter, RMS normalization,
and Fisher Transform (±0.99 clamp). Sealed class, O(1) streaming RMS via
RingBuffer, precomputed SSF coefficients.
New files: Dso.cs, Dso.Quantower.cs, Dso.md, dso.pine,
Dso.Tests.cs (27), Dso.Validation.Tests.cs (7), Dso.Quantower.Tests.cs (11)
Updated: Exports.cs, _bridge.py, oscillators.py, SPEC.md,
_sidebar.md, lib/_index.md, oscillators/_index.md,
docs/indicators.md, docs/pinescript.md
All 19,565 tests pass, 0 warnings.
2026-03-17 11:59:04 -07:00
Miha Kralj
5fc6e27d8e
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
2026-03-17 11:35:11 -07:00
Miha Kralj
eb9e41fc2e
feat: add RRSI (Rocket RSI) — Ehlers TASC May 2018
...
Algorithm: SuperSmoother-filtered momentum → Ehlers RSI → Fisher Transform
- 2-pole Butterworth IIR pre-filter removes noise
- Ehlers RSI (raw summation, not Wilder) outputs [-1,1]
- arctanh produces Gaussian-distributed zero-mean oscillator
Files: Rrsi.cs, Rrsi.Quantower.cs, Rrsi.md, 31+7 tests
Integration: sidebar, indices, Python bridge (Exports, _bridge, oscillators, SPEC)
Build: 0 warnings, 0 errors | Tests: 15,963 passed, 0 failed
2026-03-17 09:25:32 -07:00
Miha Kralj
15f4bb90f3
feat: add 8 new indicators with full integration
...
New indicators:
- HWC (Holt-Winters Channel) — channels, 27 tests
- VWMACD (Volume-Weighted MACD) — momentum, 38 tests
- Squeeze Pro — oscillators, 69 tests
- BW_MFI (Bill Williams MFI) — oscillators
- DSTOCH (Double Stochastic) — oscillators
- ATRSTOP (ATR Trailing Stop) — reversals
- VSTOP (Volatility Stop) — reversals
- Convexity (Beta Convexity) — statistics, 23 tests
Integration:
- Python bridge: Exports.cs, _bridge.py, wrapper modules
- Documentation: _sidebar.md, _index.md pages, SPEC.md
- All analyzer warnings fixed (MA0074, xUnit2013, S2699)
Build: 0 warnings, 0 errors | Tests: 15,933 passed, 0 failed
2026-03-17 08:35:29 -07:00
Miha Kralj
6f0a339c9b
fix: resolve build and test errors
...
- Sar.Quantower.Tests.cs: add missing opening quote on string literal (line 48)
- Exports.cs: rename Correlation.Batch → Correl.Batch (CS0103)
- Ad.Validation.Tests.cs: fix Ooples OutputValues key "Ad" → "Adl"
2026-03-16 12:45:13 -07:00
Miha Kralj
e3bd07aa87
feat: add ADF (Augmented Dickey-Fuller) indicator
...
- Core implementation with Cholesky OLS, MacKinnon p-value, AIC lag selection
- Three regression models: NoConstant, Constant, ConstantAndTrend
- NormCdf via Abramowitz & Stegun 7.1.26 erf approximation
- Quantower adapter, Python bridge (NativeAOT export + ctypes + wrapper)
- 69 tests (41 unit + 12 validation + 14 Quantower + 2 consistency)
- Documentation with Schwert table, MacKinnon coefficients, PineScript ref
- All 19,095 tests pass, zero warnings
2026-03-15 17:56:54 -07:00
Miha Kralj
031f1b5fe6
feat: add new indicators (Decay, Edecay, MinusDi, MinusDm, PlusDi, PlusDm, Maxindex, Minindex, Sarext) and update pine scripts, core libs, validation tests, and python bindings
2026-03-09 13:45:46 -07:00
Miha Kralj
935a5ab26c
fix(python): align QtlEacp export params with Eacp.Batch signature
...
The NativeAOT export had stale parameter names (period, minPeriod,
maxPeriod, useMedian) from an older API. Renamed to match the actual
Eacp.Batch(minPeriod, maxPeriod, avgLength, enhance) signature.
ABI preserved — same 7 params, same types, no Python-side changes needed.
2026-03-04 11:59:42 -08:00
Miha Kralj
c23fbbd99f
fix(frama): rewire Python export to use H/L arrays instead of single source
2026-03-02 15:56:12 -08:00
Miha Kralj
fa77882be7
refactor: remove unused JMA power parameter from entire stack
2026-03-01 22:14:30 -08:00
Miha Kralj
83e9511261
python wrapper
2026-02-28 14:14:35 -08:00