Commit Graph
152 Commits
Author SHA1 Message Date
Miha Kralj 813e9451e6 docs: add GitHub issue forms
Bug, indicator-request, and validation-mismatch forms, plus a Q&A discussion link.
2026-09-27 18:00:14 -07:00
Miha Kralj bc474fdadf feat: freeze public API and publish snupkg symbols
Added PublicApiAnalyzers 5.6.0 with PublicAPI.Shipped baselines (net10.0/net48) so breaking API changes fail the build (RS0016/RS0017). Enabled snupkg symbol packages and CI push.
2026-09-27 18:00:14 -07:00
Miha Kralj fa325ee1d0 fix: reconcile package metadata and add NuGet/net48/NinjaTrader 8 packaging
Drop stale version from README heading and remove build-time README stamping

Rewrite NuGet description/product and PyPI author and project_urls

Generate NuGet README with absolute URLs at pack time

Add net48 reference assemblies for Linux CI and publish NT8 net48 ZIP asset
2026-09-25 16:40:46 -07:00
Miha Kralj 824f166d3f Add net48 target with SIMD guards and Vector<T> fallbacks
- Multi-target lib/quantalib (net10.0;net48) with net48-only compat shims
- Guard hardware intrinsics behind #if NET5_0_OR_GREATER; net10 paths unchanged
- Add System.Numerics.Vector<T> batch cores for net48 across 15 files
- Bump Quantower adapters to net10.0 for the new TradingPlatform SDK
- Add vector-core parity tests; 16829 tests passing
2026-09-25 11:13:47 -07:00
Miha Kralj fc207de37d review and updates 2026-09-23 21:14:07 +02:00
Miha Kralj 3cb00e8b5b version update 2026-09-22 11:38:55 +02:00
Miha Kralj 8b91cf2565 more updates - test 2026-09-22 11:21:11 +02:00
Miha Kralj aad1122ce9 Use Ubuntu 26.04 runners 2026-09-22 11:00:09 +02:00
Miha Kralj e997fb0146 minor updates to publish process 2026-09-22 10:54:25 +02:00
Miha Kralj 1bd2054aff Update remaining checkout action 2026-09-22 09:18:58 +02:00
Miha Kralj cb12eda7d5 updates to workflow 2026-09-22 09:08:46 +02:00
Miha Kralj 8937b0c0fa fix: CI checkout auth + Wrmse test failure
- Publish.yml: Change workflow permissions from {} to contents:read
  to fix GITHUB_TOKEN having no scopes for actions/checkout@v4
- Wrmse.cs: Use DateTime.UtcNow instead of DateTime.MinValue in
  Update(double,double,double) to match Beta/Covariance pattern
- Bump version to 0.8.5
2026-03-11 20:54:16 -07:00
Miha Kralj 8e43d62cbb fix: move Roslyn SARIF upload from Sonar_Analysis to ReSharper_Analysis
SonarScanner wrapper overrides ErrorLog MSBuild property, preventing
Roslyn SARIF generation. ReSharper_Analysis already builds without
SonarScanner wrapping, so ErrorLog works correctly there.
2026-03-04 17:54:25 -08:00
Miha Kralj 37eea8761b suppress S1192: guard clause exception messages are inline by convention 2026-03-04 10:29:51 -08:00
Miha Kralj ef330e527c fix: target quantalib.csproj instead of .slnx for inspectcode
Analysis of full .slnx (800+ files across 5 projects) still times out
even with --no-build. Target lib/quantalib.csproj directly to scope
analysis to the main library (~400 files). Consistent with proven
local inspectcode approach.
2026-03-04 10:03:50 -08:00
Miha Kralj 0868f20820 refactor: use --include=**.cs instead of --exclude for inspectcode
Per JetBrains docs, --exclude only filters report output, not scanning.
Switch to --include="**/*.cs" for cleaner SARIF with only C# results.
2026-03-04 10:01:37 -08:00
Miha Kralj 92ccb7e53a fix: resolve ReSharper InspectCode CI timeout
- Pre-build solution before inspectcode to avoid redundant 4-min internal build
- Add --no-build flag to jb inspectcode
- Add --exclude patterns for bin/obj/TestResults and binary artifacts
- Bump timeout-minutes from 15 to 20 as safety margin
2026-03-04 09:52:09 -08:00
Miha Kralj 0d94b4df52 refactor: move sonar-suppressions.json to .github/ directory
Keeps CI config files consolidated under .github/.
Updated Publish.yml references accordingly.
2026-03-04 08:49:10 -08:00
Miha Kralj 6f4e083811 fix: add environment 'pypi' to Publish_Package job for trusted publishing
PyPI trusted publisher OIDC token exchange failed because the workflow
job did not declare a GitHub environment. PyPI's trusted publisher config
requires environment claim to match. Added environment: pypi to the
Publish_Package job in Release.yml.
2026-03-03 13:15:17 -08:00
Miha Kralj ce4416d388 fix(python): critical bug fixes across Python wrapper 2026-03-01 21:35:19 -08:00
Miha Kralj 9c03a5bbbe fix: stabilize platform wheel retagging and manylinux uploads 2026-03-01 18:31:45 -08:00
Miha Kralj d4d0646c4f feat: publish platform-tagged wheels for all target runtimes 2026-03-01 17:47:31 -08:00
Miha Kralj aa229caf99 fix: use supported macOS Intel runner label 2026-03-01 17:19:28 -08:00
Miha Kralj 7eff56e01c fix: run linux-arm64 wheel build on native ARM runner 2026-03-01 17:17:26 -08:00
Miha Kralj 0b52892288 ci: build and publish multi-platform wheels via release workflow 2026-03-01 17:04:27 -08:00
Miha Kralj bc531d392a feat: add Python wheel release pipeline and TestPyPI publish fixes 2026-03-01 16:20:41 -08:00
Miha Kralj 1b8e7e6155 fix: publish quantower_quantalib.dll release asset 2026-03-01 14:20:17 -08:00
Miha Kralj 07054ae20a refactor: centralize versioning and stabilize PMA validation 2026-03-01 14:07:14 -08:00
Miha Kralj 9fe9a8dab6 chore 2026-02-28 17:12:11 -08:00
Miha Kralj 769a923a24 test: setup common stability and robustness properties tracking 2026-02-27 12:50:05 -08:00
Miha Kralj 7253f61299 Add TRAMA implementation and comprehensive tests
- Implemented the TRAMA (Trend Regularity Adaptive Moving Average) class with adaptive EMA logic.
- Added unit tests for TRAMA functionality, including constructor validation, basic calculations, state management, and robustness checks.
- Created validation tests to ensure consistency across different modes of operation (streaming, batch, and static calculations).
- Enhanced documentation for TRAMA, including performance profiles and quality metrics.
- Updated workspace configuration by removing unnecessary folder references.
2026-02-21 20:45:38 -08:00
Miha Kralj cbeefc9d64 Remove multiple Pine Script indicators: SSFDSP, STARCHANNEL, STBANDS, STC, UBANDS, UCHANNEL, VWAPBANDS, and VWAPSD. These indicators were deleted to streamline the library and remove unused or redundant code. 2026-02-20 18:44:56 -08:00
Miha Kralj 915d7a007b Add Standardize class for Z-Score normalization and update project files
- Implemented the Standardize class for calculating Z-Score normalization over a specified lookback period.
- Updated NDepend badge SVG files to reflect new metrics.
- Modified NDepend project files to reference the updated solution file name.
- Removed outdated documentation files related to indicator proposals and channel documentation remediation.
- Updated workspace configuration to point to the new solution file.
2026-02-07 12:47:13 -08:00
Miha Kralj 26280ce80b Add Choppiness Index (CHOP) implementation and tests
- Implemented ChopIndicator for Quantower with configurable period and cold value display.
- Created Chop class for calculating the Choppiness Index with detailed documentation.
- Added comprehensive unit tests for Chop functionality, covering various market conditions and edge cases.
- Developed markdown documentation for CHOP, detailing its historical context, mathematical foundation, and usage examples.
- Established a remediation plan for channel indicators documentation, identifying gaps and prioritizing updates.
2026-02-05 19:42:49 -08:00
Miha Kralj 3e854eac3f Refactor documentation links in numerics, oscillators, reversals, and statistics modules to use relative paths; update Bias class to handle division by zero more robustly; remove obsolete CUMMEAN Pine script; enhance trend indicators documentation; add Visual Studio Code workspace configuration. 2026-02-04 11:43:59 -08:00
Miha Kralj 5ed4b6c0fc pine files 2026-01-31 14:05:53 -08:00
Miha Kralj c7e55c2f1e Add Intraday Intensity Index (III) implementation and tests
- Implemented the III indicator in Iii.Quantower.cs, measuring buying/selling pressure based on close price within the day's range, weighted by volume.
- Added unit tests for III functionality in Iii.Tests.cs, covering various scenarios including default parameters, updates, and cumulative mode.
- Created validation tests in Iii.Validation.Tests.cs to ensure consistency between streaming, batch, and span calculations.
- Developed comprehensive documentation for III in Iii.md, detailing its historical context, mathematical foundation, and common pitfalls.
2026-01-28 08:56:41 -08:00
Miha Kralj a9e72dae0d Refactor and enhance various channel indicators for improved performance and stability
- Updated Codacy instructions to streamline usage guidelines.
- Refactored Bbands class to utilize ArrayPool for memory management, preventing stack overflow on large series.
- Changed Fcb class to use long for monotonic deques to avoid truncation issues.
- Enhanced Kchannel class to ensure safe defaults for non-finite values.
- Improved Maenv class to prevent double-priming during calculations.
- Modified Mmchannel class to ensure non-negative buffer indices and removed unnecessary state tracking.
- Updated Pchannel class to correctly reference IsHot state.
- Refined Regchannel class to avoid double-processing during calculations.
- Enhanced Starchannel class to sanitize non-finite values during calculations.
- Adjusted Stbands.Quantower.cs to allow finer control over multiplier precision.
- Updated Ubands class to only update last valid values on new bars.
- Modified Uchannel.Quantower.cs to allow for finer multiplier precision.
- Enhanced Vwapbands classes to include standard deviation calculations and ensure consistent array lengths.
- Refactored Vwapsd classes to include standard deviation outputs and ensure consistent array lengths.
- Updated MonotonicDeque to use long for indices to prevent overflow.
- Improved Mdape class to handle zero actual values with a substitute value for error calculation.
- Enhanced Rae class to ensure correct state management during updates.
- Refined Wmape class to simplify the logic for finding last valid actual and predicted values.
- Updated Cmf.Quantower classes to ensure MinHistoryDepths reflects the current period.
2026-01-27 23:48:33 -08:00
Miha Kralj d04a1521a3 fix: restore truncated Codacy_Upload job in workflow 2026-01-26 16:04:40 -08:00
Miha Kralj 4652df360f feat: sync Sonar rule suppressions across SonarCloud, Codacy, and local builds 2026-01-26 15:57:45 -08:00
Miha Kralj 480715f66f Add Sonar rule suppressions and update Publish workflow for Codacy rule sync 2026-01-26 12:00:06 -08:00
Miha Kralj 2836f253c4 Refactor error handling and calculations in TheilU, Wmape, and TukeyBiweight classes; update buffer handling for consistency
- Updated buffer handling in TheilU and Wmape classes to ensure consistency after adding new values.
- Changed the resync interval constant in TukeyBiweight for better clarity.
- Refactored state structures to record structs in Gauss, Hann, Hp, Hpf, Kalman, Loess, Notch, and other filter classes for improved performance and readability.
- Enhanced numerical stability in Mama class calculations using Fused Multiply-Add (FMA) for precision.
- Added comprehensive tests for Atan2 validation to compare .NET's Math.Atan2 with PineScript's implementation, ensuring accuracy across various edge cases.
- Updated NDepend badges to reflect changes in classes, methods, and lines of code.
2026-01-24 23:07:09 -08:00
Miha Kralj fd6c80e8db Add Chaikin Money Flow (CMF) Indicator Implementation and Tests
- Implemented CMF indicator in Cmf.cs with detailed calculations and methods.
- Created unit tests for CMF validation against Skender, Ooples, and batch processing.
- Added documentation for CMF in Cmf.md, explaining its purpose, calculations, and usage.
- Updated project files to include new statistics library.
- Updated NDepend badges to reflect changes in classes, methods, and lines of code.
2026-01-23 18:40:20 -08:00
Miha Kralj 24db200d19 fix: remove standalone DLL from release assets (NuGet package contains all frameworks) 2026-01-21 23:51:55 -06:00
Miha Kralj cd7f753f14 fix: update file patterns for NuGet packing to ensure correct DLL inclusion 2026-01-21 23:35:50 -06:00
Miha Kralj 0c3b944485 feat: streamline release workflow and remove unnecessary warnings in test files 2026-01-21 23:27:03 -06:00
Miha Kralj da4e56bf40 feat: Add new CodeQL extension for C# and SonarLint configuration
- Introduced a new CodeQL extension for C# in `.github/codeql/extensions/quantalib-csharp/codeql-pack.yml`.
- Added SonarLint configuration in `.sonarlint/CSharp/SonarLint.xml` and `.sonarlint/csharp.ruleset` to suppress specific rules for high-performance indicators.
- Removed outdated `.vscode/launch.json` configurations.
- Updated `.vscode/tasks.json` to streamline build and test tasks, including renaming and consolidating tasks.
- Modified `Directory.Build.props` to enhance SARIF output directory handling and integrate SonarLint rules.
- Refactored various indicator classes to improve code clarity and maintainability, including updates to method parameters for consistency.
- Added XML documentation comments to several classes and methods for better code understanding.
- Improved numerical stability in calculations by replacing direct comparisons with `double.Epsilon` checks in multiple classes.
2026-01-21 23:05:38 -06:00
Miha Kralj 32f3366952 feat: enhance SARIF file handling in Publish workflow 2026-01-21 17:50:08 -05:00
Miha Kralj fdfbfd98f0 Add Starchannel indicator implementation and validation tests
- Implemented the Starchannel class, which calculates a volatility-based envelope using SMA as the middle line and ATR for band width.
- Added methods for updating the indicator with new data, batch calculations, and state management.
- Created comprehensive unit tests for the Starchannel indicator, validating various scenarios including manual calculations, consistency across modes, eventing, and handling of large datasets.
- Ensured that the indicator's outputs are finite and that band widths are consistent across different calculation modes.
2026-01-21 17:21:29 -05:00
Miha Kralj 470d2f0121 fixing workflows 2026-01-21 16:06:19 -05:00