Miha Kralj
b79b56dc65
feat: add TBF (Ehlers Truncated BandPass Filter) + fix all 64 warnings
...
TBF indicator:
- Sealed class with RingBuffer, stackalloc scratch, O(Length) per bar
- 7 core files: Tbf.cs, Tbf.Quantower.cs, Tbf.md, tbf.pine, 3 test files
- 67 tests (48 lib + 19 Quantower) all passing
- Full integration: sidebar, indexes, docs, Python bridge, exports
AMFM fix:
- Added envBuf.Clear()/smaBuf.Clear() after stackalloc in Batch
(SkipLocalsInit garbage values caused 8.97e+65 blowup)
Warning fixes (64 → 0):
- Amfm.cs: S125 commented code removed, 11× IDE0011 braces
- Pta.cs: 11× IDE0011 braces on if/else/for/foreach
- Pta.Tests.cs: 14× IDE0011, S1481 unused var, S2699 assertion, 2× MA0074
- Lpf.Quantower.Tests.cs: 2× MA0074 StringComparison
Build: 0 warnings, 0 errors, 20,048 tests passing
2026-03-18 19:10:48 -07:00
Miha Kralj
6ac30d37e6
feat: add LPF - Ehlers Linear Predictive Filter (TASC Jan 2025)
...
Implements Ehlers' Linear Predictive Filter for dominant cycle detection:
- Roofing filter (HP + SuperSmoother) → AGC → Griffiths adaptive predictor
- DFT spectrum from predictor coefficients → Center of Gravity dominant cycle
- Outputs: DominantCycle, Signal (AGC-normalized), Predict (one-bar-ahead)
Files added:
- lib/cycles/lpf/Lpf.cs (core implementation, sealed class)
- lib/cycles/lpf/Lpf.Quantower.cs (3 LineSeries: Cycle, Signal, Predict)
- lib/cycles/lpf/Lpf.md (canonical template v3 documentation)
- lib/cycles/lpf/lpf.pine (PineScript v6 reference)
- lib/cycles/lpf/tests/Lpf.Tests.cs (38 unit tests)
- lib/cycles/lpf/tests/Lpf.Quantower.Tests.cs (22 adapter tests)
Updated: index files, Python bridge (Exports.cs, _bridge.py, cycles.py)
2026-03-17 20:24:54 -07:00
Miha Kralj
aec3a64e4e
feat(dynamics): add PTA - Ehlers Precision Trend Analysis
...
TASC Sep 2024. Dual 2-pole Butterworth highpass bandpass for
near-zero-lag trend extraction. HP(long) - HP(short) preserves
cycles between shortPeriod and longPeriod.
- Core: Pta.cs with O(1) streaming, Span batch, state rollback
- Quantower: PtaIndicator adapter with LineSeries + SetValue
- Tests: 31 lib + 11 Quantower (all passing)
- Pine: pta.pine PineScript v6 reference
- Docs: Pta.md canonical template v3
- Python: Exports.Generated.cs + _bridge.py + dynamics.py
- Indexes: _sidebar.md, lib/_index.md, dynamics/_index.md,
docs/indicators.md, docs/pinescript.md
2026-03-17 17:25:17 -07:00
Miha Kralj
84d12e5706
feat: add USI (Ehlers Ultimate Strength Index) - TASC Nov 2024
2026-03-17 16:44:48 -07:00
Miha Kralj
d3cb9d2513
feat(cycles): add AMFM - Ehlers AM Detector / FM Demodulator
2026-03-17 15:56:55 -07:00
Miha Kralj
8112009b32
feat(filters): add NET - Ehlers Noise Elimination Technology (TASC Dec 2020)
2026-03-17 14:38:31 -07:00
Miha Kralj
f7dcc20f7c
feat: add EEO (Ehlers Elegant Oscillator) - TASC Feb 2022
2026-03-17 14:18:57 -07:00
Miha Kralj
b4523b5cca
feat: add MADH (Ehlers Moving Average Difference with Hann) indicator
2026-03-17 13:48:34 -07:00
Miha Kralj
4fa29c04b7
feat: add DMH (Ehlers Directional Movement with Hann) indicator
2026-03-17 13:35:03 -07:00
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
f10baa6dfb
docs: add license rationale, Python/PineScript guides, API updates
...
- Add docs/license.md with Apache 2.0 rationale and patent protection analysis
- Add docs/python.md and docs/pinescript.md platform guides
- Expand README license section with disclosure and link to rationale
- Update docs/api.md and docs/architecture.md
- Update Python bindings: helpers, all indicator modules, pyproject.toml
- Add Python tests for Arrow and Polars integration
- Update TValue core type and documentation
- Add fix_length_to_period tooling script
2026-03-03 22:11:35 -08:00
Miha Kralj
50711933e1
chore: remove gitignored files from tracking, update channels
...
- Remove .vscode/, __pycache__/, publish binaries, and .dll/.pdb files from git tracking (now covered by .gitignore)
2026-03-03 10:33:23 -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
18694e337e
feat: add length->period kwargs alias across all 168 indicator functions for pandas-ta compat
2026-03-02 10:00:29 -08:00
Miha Kralj
439b818201
fix: rebuild NativeAOT DLL after JMA power removal + add length kwargs alias
2026-03-01 22:37:56 -08:00
Miha Kralj
fa77882be7
refactor: remove unused JMA power parameter from entire stack
2026-03-01 22:14:30 -08:00
Miha Kralj
ce04e2792b
fix: sync 28+ Python default params with C# constructors
2026-03-01 22:04:30 -08:00
Miha Kralj
ce4416d388
fix(python): critical bug fixes across Python wrapper
2026-03-01 21:35:19 -08:00
Miha Kralj
d4d0646c4f
feat: publish platform-tagged wheels for all target runtimes
2026-03-01 17:47:31 -08:00
Miha Kralj
07054ae20a
refactor: centralize versioning and stabilize PMA validation
2026-03-01 14:07:14 -08:00
Miha Kralj
768123d056
minor
2026-02-28 16:05:11 -08:00
Miha Kralj
83e9511261
python wrapper
2026-02-28 14:14:35 -08:00