- 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.
- 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.
- Implemented Sdchannel class for calculating standard deviation channels based on linear regression.
- Added detailed documentation for SDCHANNEL, including overview, calculation methods, and interpretation.
- Updated project files to include new numerics library components in Channels and Volatility projects.
Add implementation of CVI - Chaikin's Volatility class and related tests.
* **Cvi Class Implementation:**
- Add `Cvi` class in `lib/volatility/Cvi.cs` to calculate Chaikin's Volatility.
- Use high and low prices for calculation.
- Include a constructor with `period` parameter.
- Add a method to calculate Chaikin's Volatility.
* **Quantower Indicator:**
- Add `CviIndicator` class in `quantower/Volatility/CviIndicator.cs`.
- Use `Cvi` class for calculation.
- Add input parameters for `period` and `showColdValues`.
- Implement `OnInit` and `OnUpdate` methods.
* **Tests:**
- Add a test method for `Cvi` class in `Tests/test_updates_volatility.cs`.
- Use random updates to test `Cvi`.
- Ensure initial and final values are equal.
---
For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/mihakralj/QuanTAlib?shareId=XXXX-XXXX-XXXX-XXXX).