Commit Graph
55 Commits
Author SHA1 Message Date
Miha Kralj 2d28b8f62a Add Span API for SMA, EMA, and WMA with zero-allocation performance improvements
- Implemented zero-allocation methods for SMA, EMA, and WMA calculations using ReadOnlySpan and Span.
- Added unit tests for Span API to validate input, match TSeries calculations, handle NaN values, and ensure zero allocation.
- Enhanced documentation to include usage examples for the new Span API.
- Introduced performance benchmarks comparing the new Span API against existing TSeries implementations and other libraries.
2025-11-29 20:48:01 -08:00
Miha Kralj 5c1fb18520 Implement Weighted Moving Average (WMA) and Multi-Period WMA (WmaVector) classes with O(1) update complexity
- Added Wma class for calculating the Weighted Moving Average with detailed documentation and optimized performance using dual running sums.
- Introduced WmaVector class to handle multiple WMAs simultaneously, supporting batch calculations and real-time updates.
- Implemented last-value substitution for handling invalid inputs (NaN/Infinity) in both classes.
- Created comprehensive unit tests for Wma and WmaVector to ensure accuracy and reliability of calculations.
- Updated documentation to include usage examples, mathematical foundations, and performance characteristics.
2025-11-29 19:31:50 -08:00
Miha Kralj 1f80cfda74 feat: Implement SIMD-optimized Multi-Period Simple Moving Average (SMA) with RingBuffer
- Added SmaVector class for calculating multiple SMAs in parallel using SIMD.
- Introduced RingBuffer class for efficient circular buffer management with running sum.
- Implemented unit tests for RingBuffer to ensure correctness and performance.
- Enhanced Add method in RingBuffer to support bar correction semantics.
- Added methods for calculating Min and Max using SIMD acceleration.
- Improved performance with pinned memory and direct span access for SIMD compatibility.
2025-11-29 18:28:42 -08:00
Miha Kralj 8f6142cfc0 refactor: clean up Ema and EmaVector tests for consistency, update TValue equality check 2025-11-29 17:30:20 -08:00
Miha Kralj ce77bc9c85 refactor: update NoWarn codes and clean up EmaValidationTests and EmaVectorTests 2025-11-29 17:04:56 -08:00
Miha Kralj 622e4c8ae6 refactor: update Ema and EmaVector tests to use DateTime.UtcNow for consistency 2025-11-29 16:54:15 -08:00
Miha Kralj 2b4e8e3fc3 Add UCFG2 type definitions and lock file for QuanTAlib
- Introduced type definitions for various classes in the QuanTAlib library, including Ema, EmaVector, EmaState, TSeries, CsvFeed, GBM, TBarSeries, TBar, and TValue.
- Added methods and properties for each class to enhance functionality and maintainability.
- Created a lock file to manage dependencies and ensure consistent builds.
2025-11-29 16:43:52 -08:00
Miha Kralj 8d8e60098e Refactor and expand unit tests for TBarSeries, TSeries, and TValue classes
- Enhanced TBarSeriesTests with additional constructors, methods, and assertions for better coverage.
- Improved TSeriesTests to include new constructors, methods, and edge cases.
- Expanded TValueTests to cover constructors, implicit conversions, equality checks, and hash codes.
- Updated project file to target .NET 10.0 and include internal visibility for tests.
- Added Codacy configuration for code quality checks.
2025-11-29 16:08:45 -08:00
Miha Kralj 6cdebb984d feat: implement last-value substitution for NaN/Infinity in Ema and EmaVector, enhance documentation and tests 2025-11-29 13:19:04 -08:00
Miha Kralj acac3e610c updates from mac 2025-11-28 13:35:16 -08:00
Miha Kralj 74b49d2bb4 Add TBar, TBarSeries, TSeries, TValue, and IFeed implementations with comprehensive documentation and examples
- Introduced TBar struct for efficient OHLCV data representation.
- Implemented TBarSeries class for high-performance collection of TBar instances using Structure of Arrays (SoA) layout.
- Added TSeries class for time-series data management with zero-copy access.
- Created TValue struct for time-value pairs with implicit conversions.
- Defined IFeed interface for consistent data feed implementations.
- Developed CsvFeed class for loading historical OHLCV data from CSV files.
- Implemented GBM class for generating synthetic financial data using Geometric Brownian Motion.
- Added Quantower project files for Averages indicator with necessary dependencies and configurations.
- Included extensive usage examples and notebooks for TBar, TBarSeries, TSeries, TValue, and feed implementations.
2025-11-27 19:51:43 -08:00
Miha Kralj 33ffd3a37a first iteration 2025-11-25 20:40:46 -08:00
miha 0f7cfb4b50 Optimize SMA to O(1) using running sum algorithm
- Changed from O(n) CircularBuffer.Average() to O(1) running sum
- Maintains _sum and _p_sum for state management
- Tracks _lastValue and _p_lastValue for isNew=false updates
- Provides ~15-20x speedup for large periods
- Pattern verified against Pine Script reference implementation
- All tests pass including update test for isNew handling

Also added .github/copilot-instructions.md with comprehensive
AI agent guidance for QuanTAlib development patterns
2025-10-21 18:47:10 -07:00
Miha Kralj 351214ed31 moar Chart indicators 2024-11-07 21:40:02 -08:00
Miha Kralj f582db2c4c fixes 2024-11-05 05:52:54 -08:00
Miha Kralj 7f6c29151c Fixes 2024-11-03 15:52:25 -08:00
Miha Kralj 94928714bf sonar fixes 2024-11-03 15:52:25 -08:00
codefactor-io a0c99ef326 [CodeFactor] Apply fixes 2024-11-03 23:47:53 +00:00
codefactor-io e60cf47d3a [CodeFactor] Apply fixes 2024-11-03 23:03:24 +00:00
Miha 6231bab9e5 feat: Dpo, Tsi, Vortex, Bpp, Cci, Cfo, Tr, Ui, Vc, Vov, Vr, Vs, Mfi, Nvi, Obv, Pvi, Pvo, Pvol, Pvr, Pvt, Tvi 2024-10-30 13:45:36 -07:00
Miha 6c67a0cf31 Class optimization 2024-10-27 16:11:08 -07:00
Miha b2fcdda785 xml doc rewrite 2024-10-27 09:38:53 -07:00
Miha c21b96152c macos dev update 2024-10-26 23:54:55 -07:00
Miha Kralj efc8e553db Rsi and Rsx 2024-10-24 18:30:59 -07:00
Miha Kralj e3d7cd9896 Atr, FlowIndicator and fixes 2024-10-21 16:06:47 -07:00
Miha Kralj fbe4046b5d Documentation 2024-10-16 18:28:06 -07:00
Miha Kralj ffed6491d4 corrections 2024-10-13 17:31:35 -07:00
Miha Kralj cc45cebeb4 tests and cleanup 2024-10-11 18:02:09 -07:00
Miha Kralj 839313c9f2 Pwma 2024-10-10 16:23:23 -07:00
Miha Kralj 5974f54953 removed Archive 2024-10-09 14:38:51 -07:00
deepsource-autofix[bot]andGitHub 47862d8682 style: format code with dotnet-format
This commit fixes the style issues introduced in 0bc4185 according to the output
from dotnet-format.

Details: https://github.com/mihakralj/QuanTAlib/pull/32
2024-10-08 21:00:48 +00:00
Miha Kralj 0bc41854aa cleanup 2024-10-08 13:59:33 -07:00
deepsource-autofix[bot]andGitHub 838f664862 style: format code with dotnet-format
This commit fixes the style issues introduced in a7eeacf according to the output
from dotnet-format.

Details: None
2024-10-08 17:47:49 +00:00
Miha Kralj a7eeacf8cb Merge branch 'dev' 2024-10-08 10:47:21 -07:00
deepsource-autofix[bot]andGitHub 85b9d9217a style: format code with dotnet-format
This commit fixes the style issues introduced in 931bbdb according to the output
from dotnet-format.

Details: https://github.com/mihakralj/QuanTAlib/pull/30
2024-10-08 17:31:29 +00:00
Miha Kralj 931bbdb6a0 pull request changes 2024-10-08 10:31:04 -07:00
Miha Kralj af234594cc event tests 2024-10-08 09:25:01 -07:00
Miha Kralj b7b5a4a1bf clean code fixes 2024-10-06 17:16:47 -07:00
deepsource-autofix[bot]andGitHub 5fe968754f style: format code with dotnet-format
This commit fixes the style issues introduced in 1e77eb8 according to the output
from dotnet-format.

Details: None
2024-10-06 06:59:26 +00:00
Miha Kralj 8a3c257038 Vidya fix 2024-09-30 09:21:52 -07:00
Miha Kralj c35d46a962 Merge branch 'dev' 2024-09-30 09:17:57 -07:00
Miha Kralj a48cc5ce85 Vidya fix 2024-09-30 09:17:31 -07:00
Miha Kralj 728017c9ca Merge branch 'dev' 2024-09-30 09:07:08 -07:00
Miha Kralj 93085d24bd sln file 2024-09-30 08:55:50 -07:00
Miha Kralj bdc01bff4a Atr 2024-09-30 06:46:07 -07:00
Miha Kralj 148f0ea846 dependabot 2024-09-26 10:44:09 -07:00
Miha Kralj 9477fc7276 Merge branch 'dev' 2024-09-24 16:51:46 -07:00
Miha Kralj 012458d9d7 Dsma fix 2024-09-24 16:51:11 -07:00
Miha Kralj 133c65ceaf Afirma + documentation +semver: patch 2024-09-24 16:41:26 -07:00
Miha Kralj 4b25801d52 Afirma + documentation 2024-09-24 16:28:16 -07:00