chore: repo cleanup and code quality improvements

- Remove global.json (SDK pinning unnecessary)

- Remove nuget.config, move MyGet source to .csproj RestoreAdditionalProjectSources

- Gitignore ndepend/ entirely, move badges to docs/img/

- Update README.md and docs/ndepend.md badge paths

- Add NDepend project property to QuanTAlib.slnx

- Expand .editorconfig ReSharper/diagnostic suppressions

- Use ArgumentOutOfRangeException instead of ArgumentException

- Use discard _ for unused event sender parameters

- Remove quantalib.code-workspace and sonar-suppressions.json

- Add filter signature SVGs
This commit is contained in:
Miha Kralj
2026-03-03 09:22:55 -08:00
parent e1a6743bda
commit 1910fdca93
131 changed files with 216046 additions and 2027 deletions
+6 -6
View File
@@ -208,8 +208,8 @@ public sealed class Ichimoku : ITValuePublisher
_p_state = _state;
Array.Fill(_highBuffer, double.NaN);
Array.Fill(_lowBuffer, double.NaN);
Array.Copy(_highBuffer, _p_highBuffer!, _highBuffer.Length);
Array.Copy(_lowBuffer, _p_lowBuffer!, _lowBuffer.Length);
Array.Copy(_highBuffer, _p_highBuffer, _highBuffer.Length);
Array.Copy(_lowBuffer, _p_lowBuffer, _lowBuffer.Length);
Tenkan = default;
Kijun = default;
SenkouA = default;
@@ -299,14 +299,14 @@ public sealed class Ichimoku : ITValuePublisher
if (isNew)
{
_p_state = _state;
Array.Copy(_highBuffer, _p_highBuffer!, _highBuffer.Length);
Array.Copy(_lowBuffer, _p_lowBuffer!, _lowBuffer.Length);
Array.Copy(_highBuffer, _p_highBuffer, _highBuffer.Length);
Array.Copy(_lowBuffer, _p_lowBuffer, _lowBuffer.Length);
}
else
{
_state = _p_state;
Array.Copy(_p_highBuffer!, _highBuffer, _highBuffer.Length);
Array.Copy(_p_lowBuffer!, _lowBuffer, _lowBuffer.Length);
Array.Copy(_p_highBuffer, _highBuffer, _highBuffer.Length);
Array.Copy(_p_lowBuffer, _lowBuffer, _lowBuffer.Length);
}
var (high, low, close) = GetValidHLC(bar);
-6
View File
@@ -198,8 +198,6 @@ public sealed class Pfe : AbstractBase
PubEvent(Last, isNew);
return Last;
}
/// <inheritdoc/>
public override TSeries Update(TSeries source)
{
if (source.Count == 0)
@@ -225,8 +223,6 @@ public sealed class Pfe : AbstractBase
Last = new TValue(tSpan[len - 1], vSpan[len - 1]);
return new TSeries(t, v);
}
/// <inheritdoc/>
public override void Prime(ReadOnlySpan<double> source, TimeSpan? step = null)
{
if (source.Length == 0)
@@ -457,8 +453,6 @@ public sealed class Pfe : AbstractBase
}
}
}
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override void Reset()
{
-6
View File
@@ -184,8 +184,6 @@ public sealed class Ravi : AbstractBase
PubEvent(Last, isNew);
return Last;
}
/// <inheritdoc/>
public override TSeries Update(TSeries source)
{
if (source.Count == 0)
@@ -211,8 +209,6 @@ public sealed class Ravi : AbstractBase
Last = new TValue(tSpan[len - 1], vSpan[len - 1]);
return new TSeries(t, v);
}
/// <inheritdoc/>
public override void Prime(ReadOnlySpan<double> source, TimeSpan? step = null)
{
if (source.Length == 0)
@@ -465,8 +461,6 @@ public sealed class Ravi : AbstractBase
}
}
}
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override void Reset()
{
@@ -49,7 +49,7 @@ public class TtmSqueezeValidationTests
}
// Momentum should be near zero since price = midline
Assert.True(System.Math.Abs(squeeze.Momentum.Value) < 1.0);
Assert.True(Math.Abs(squeeze.Momentum.Value) < 1.0);
}
[Fact]
@@ -250,7 +250,7 @@ public class TtmSqueezeValidationTests
for (int i = 0; i < 50; i++)
{
double price = 100 + System.Math.Sin(i * 0.2) * 10;
double price = 100 + Math.Sin(i * 0.2) * 10;
double high = price + 2;
double low = price - 2;
source.Add(new TBar(baseTime + i * 60000, price, high, low, price + 0.5, 1000));
@@ -306,7 +306,7 @@ public class TtmSqueezeValidationTests
Assert.True(double.IsFinite(squeeze.Momentum.Value));
// With constant price, donchian midline = price, so momentum should be near 0
Assert.True(System.Math.Abs(squeeze.Momentum.Value) < 0.01);
Assert.True(Math.Abs(squeeze.Momentum.Value) < 0.01);
}
[Fact]
-6
View File
@@ -184,8 +184,6 @@ public sealed class Vhf : AbstractBase
PubEvent(Last, isNew);
return Last;
}
/// <inheritdoc/>
public override TSeries Update(TSeries source)
{
if (source.Count == 0)
@@ -211,8 +209,6 @@ public sealed class Vhf : AbstractBase
Last = new TValue(tSpan[len - 1], vSpan[len - 1]);
return new TSeries(t, v);
}
/// <inheritdoc/>
public override void Prime(ReadOnlySpan<double> source, TimeSpan? step = null)
{
if (source.Length == 0)
@@ -461,8 +457,6 @@ public sealed class Vhf : AbstractBase
}
}
}
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override void Reset()
{