[CodeFactor] Apply fixes to commit 4a01f03

This commit is contained in:
codefactor-io
2026-03-11 03:35:12 +00:00
parent 4a01f03cb4
commit 567fa89465
63 changed files with 293 additions and 302 deletions
+4 -4
View File
@@ -94,7 +94,7 @@ public class CcorValidationTests
for (int i = 0; i < 200; i++)
{
double val = 100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / period);
double val = 100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / period));
ccor.Update(new TValue(DateTime.UtcNow.AddMinutes(i), val), true);
}
@@ -103,7 +103,7 @@ public class CcorValidationTests
$"Sine wave should produce non-trivial phasor: Real={ccor.Real:F4}, Imag={ccor.Imag:F4}");
// R² + I² should be near 1 for a pure tone at the matched frequency
double magnitude = Math.Sqrt(ccor.Real * ccor.Real + ccor.Imag * ccor.Imag);
double magnitude = Math.Sqrt((ccor.Real * ccor.Real) + (ccor.Imag * ccor.Imag));
Assert.True(magnitude > 0.5,
$"Phasor magnitude should be significant for matched sine: {magnitude:F4}");
}
@@ -138,7 +138,7 @@ public class CcorValidationTests
for (int i = 0; i < 200; i++)
{
double val = 100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / period);
double val = 100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / period));
ccor.Update(new TValue(DateTime.UtcNow.AddMinutes(i), val), true);
}
@@ -374,7 +374,7 @@ public class CcorValidationTests
for (int i = 0; i < 100; i++)
{
ind.Update(new TValue(t0.AddMinutes(i),
100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / 20.0)), isNew: true);
100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / 20.0))), isNew: true);
}
// Anchor bar
+6 -6
View File
@@ -158,7 +158,7 @@ public sealed class Ccor : AbstractBase
// Phasor angle (degrees) with quadrant resolution
if (imagVal != 0.0)
{
angleVal = 90.0 + Math.Atan(realVal / imagVal) * (180.0 / Math.PI);
angleVal = 90.0 + (Math.Atan(realVal / imagVal) * (180.0 / Math.PI));
}
if (imagVal > 0.0)
{
@@ -342,7 +342,7 @@ public sealed class Ccor : AbstractBase
for (int k = 0; k < n; k++)
{
int idx = ((bufIdx - 1 - k) % period + period) % period;
int idx = (((bufIdx - 1 - k) % period) + period) % period;
double x = priceBuf[idx];
double y = cosTab[k];
sx += x;
@@ -353,8 +353,8 @@ public sealed class Ccor : AbstractBase
}
double nd = n;
double dp = (nd * sxx - sx * sx) * (nd * syy - sy * sy);
realVal = dp > 0.0 ? Math.Clamp((nd * sxy - sx * sy) / Math.Sqrt(dp), -1.0, 1.0) : 0.0;
double dp = ((nd * sxx) - (sx * sx)) * ((nd * syy) - (sy * sy));
realVal = dp > 0.0 ? Math.Clamp(((nd * sxy) - (sx * sy)) / Math.Sqrt(dp), -1.0, 1.0) : 0.0;
}
output[i] = realVal;
@@ -423,13 +423,13 @@ public sealed class Ccor : AbstractBase
}
double nd = n;
double denomProd = (nd * sxx - sx * sx) * (nd * syy - sy * sy);
double denomProd = ((nd * sxx) - (sx * sx)) * ((nd * syy) - (sy * sy));
if (denomProd <= 0.0)
{
return 0.0;
}
double r = (nd * sxy - sx * sy) / Math.Sqrt(denomProd);
double r = ((nd * sxy) - (sx * sy)) / Math.Sqrt(denomProd);
return Math.Clamp(r, -1.0, 1.0);
}
}
+8 -8
View File
@@ -40,7 +40,7 @@ public class EacpValidationTests
// Generate sine wave with known period
for (int i = 0; i < 500; i++)
{
double price = 100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / knownPeriod);
double price = 100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / knownPeriod));
eacp.Update(new TValue(DateTime.UtcNow.AddSeconds(i), price));
}
@@ -155,7 +155,7 @@ public class EacpValidationTests
// Generate sine wave
for (int i = 0; i < 300; i++)
{
double price = 100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / 20.0);
double price = 100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / 20.0));
eacpEnhanced.Update(new TValue(DateTime.UtcNow.AddSeconds(i), price));
eacpNormal.Update(new TValue(DateTime.UtcNow.AddSeconds(i), price));
}
@@ -293,7 +293,7 @@ public class EacpValidationTests
for (int i = 0; i < 200; i++)
{
double price = 0.0001 + 0.00001 * Math.Sin(2.0 * Math.PI * i / 20.0);
double price = 0.0001 + (0.00001 * Math.Sin(2.0 * Math.PI * i / 20.0));
eacp.Update(new TValue(DateTime.UtcNow.AddSeconds(i), price));
}
@@ -308,7 +308,7 @@ public class EacpValidationTests
for (int i = 0; i < 200; i++)
{
double price = 1e10 + 1e9 * Math.Sin(2.0 * Math.PI * i / 20.0);
double price = 1e10 + (1e9 * Math.Sin(2.0 * Math.PI * i / 20.0));
eacp.Update(new TValue(DateTime.UtcNow.AddSeconds(i), price));
}
@@ -360,7 +360,7 @@ public class EacpValidationTests
// Generate pure sine wave
for (int i = 0; i < 300; i++)
{
double price = 100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / 20.0);
double price = 100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / 20.0));
eacp.Update(new TValue(DateTime.UtcNow.AddSeconds(i), price));
}
@@ -406,8 +406,8 @@ public class EacpValidationTests
// Generate two different sine waves
for (int i = 0; i < 500; i++)
{
double price1 = 100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / period1);
double price2 = 100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / period2);
double price1 = 100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / period1));
double price2 = 100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / period2));
eacp1.Update(new TValue(DateTime.UtcNow.AddSeconds(i), price1));
eacp2.Update(new TValue(DateTime.UtcNow.AddSeconds(i), price2));
@@ -428,7 +428,7 @@ public class EacpValidationTests
for (int i = 0; i < 100; i++)
{
ind.Update(new TValue(t0.AddMinutes(i),
100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / 20.0)), isNew: true);
100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / 20.0))), isNew: true);
}
// Anchor bar
+8 -8
View File
@@ -191,10 +191,10 @@ public sealed class Eacp : AbstractBase
// High-pass filter: removes DC and low-frequency trend
double hp2 = s.Hp1;
double hp1 = s.Hp0;
double coef = (1.0 - _alphaHP / 2.0);
double hp0 = coef * coef * (price0 - 2.0 * price1 + price2)
+ 2.0 * (1.0 - _alphaHP) * hp1
- (1.0 - _alphaHP) * (1.0 - _alphaHP) * hp2;
double coef = (1.0 - (_alphaHP / 2.0));
double hp0 = (coef * coef * (price0 - (2.0 * price1) + price2))
+ (2.0 * (1.0 - _alphaHP) * hp1)
- ((1.0 - _alphaHP) * (1.0 - _alphaHP) * hp2);
// Super-smoother filter: removes high-frequency noise
double filt2 = s.Filt1;
@@ -290,12 +290,12 @@ public sealed class Eacp : AbstractBase
double corrVal = 0;
if (valid > 1)
{
double denomX = valid * sxx - sx * sx;
double denomY = valid * syy - sy * sy;
double denomX = (valid * sxx) - (sx * sx);
double denomY = (valid * syy) - (sy * sy);
double denom = denomX * denomY;
if (denom > 0)
{
corrVal = (valid * sxy - sx * sy) / Math.Sqrt(denom);
corrVal = ((valid * sxy) - (sx * sy)) / Math.Sqrt(denom);
}
}
@@ -319,7 +319,7 @@ public sealed class Eacp : AbstractBase
}
// Power = amplitude squared
double sq = cosAcc * cosAcc + sinAcc * sinAcc;
double sq = (cosAcc * cosAcc) + (sinAcc * sinAcc);
// Smooth the power spectrum (EMA-like smoothing)
// Power squared per Ehlers: emphasizes spectral peaks, suppresses noise
@@ -103,7 +103,7 @@ public sealed class HtDcperiodValidationTests : IDisposable
for (int i = 0; i < 100; i++)
{
ind.Update(new TValue(t0.AddMinutes(i),
100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / 20.0)), isNew: true);
100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / 20.0))), isNew: true);
}
// Anchor bar
+8 -8
View File
@@ -27,7 +27,7 @@ public class HtDcphaseTests
// Feed data through publisher
for (int i = 0; i < 80; i++)
{
source.Add(new TValue(DateTime.UtcNow.AddMinutes(i), 100 + Math.Sin(i * 0.3) * 10));
source.Add(new TValue(DateTime.UtcNow.AddMinutes(i), 100 + (Math.Sin(i * 0.3) * 10)));
}
Assert.True(ht.IsHot);
@@ -131,7 +131,7 @@ public class HtDcphaseTests
// Prime with data
for (int i = 0; i < 70; i++)
{
ht.Update(new TValue(now.AddMinutes(i), 100 + Math.Sin(i * 0.1) * 10));
ht.Update(new TValue(now.AddMinutes(i), 100 + (Math.Sin(i * 0.1) * 10)));
}
Assert.True(ht.IsHot);
@@ -153,7 +153,7 @@ public class HtDcphaseTests
for (int i = 0; i < 70; i++)
{
ht.Update(new TValue(now.AddMinutes(i), 100 + i * 0.5));
ht.Update(new TValue(now.AddMinutes(i), 100 + (i * 0.5)));
}
// New bar
@@ -187,7 +187,7 @@ public class HtDcphaseTests
for (int i = 0; i < 80; i++)
{
ht.Update(new TValue(now.AddMinutes(i), 100 + Math.Sin(i * 0.2) * 5));
ht.Update(new TValue(now.AddMinutes(i), 100 + (Math.Sin(i * 0.2) * 5)));
}
Assert.True(ht.IsHot);
@@ -203,7 +203,7 @@ public class HtDcphaseTests
for (int i = 0; i < 80; i++)
{
ht.Update(new TValue(now.AddMinutes(i), 100 + i * 0.5));
ht.Update(new TValue(now.AddMinutes(i), 100 + (i * 0.5)));
}
var result = ht.Update(new TValue(now.AddMinutes(80), double.PositiveInfinity));
@@ -236,14 +236,14 @@ public class HtDcphaseTests
for (int i = 0; i < 80; i++)
{
ht.Update(new TValue(now.AddMinutes(i), 100 + Math.Sin(i * 0.2) * 5));
ht.Update(new TValue(now.AddMinutes(i), 100 + (Math.Sin(i * 0.2) * 5)));
}
var firstResult = ht.Last.Value;
ht.Reset();
for (int i = 0; i < 80; i++)
{
ht.Update(new TValue(now.AddMinutes(i), 100 + Math.Sin(i * 0.2) * 5));
ht.Update(new TValue(now.AddMinutes(i), 100 + (Math.Sin(i * 0.2) * 5)));
}
Assert.Equal(firstResult, ht.Last.Value);
}
@@ -352,7 +352,7 @@ public class HtDcphaseTests
var values = new double[80];
for (int i = 0; i < 80; i++)
{
values[i] = 100 + Math.Sin(i * 0.2) * 5;
values[i] = 100 + (Math.Sin(i * 0.2) * 5);
}
ht.Prime(values, TimeSpan.FromMinutes(5));
@@ -103,7 +103,7 @@ public sealed class HtDcphaseValidationTests : IDisposable
for (int i = 0; i < 100; i++)
{
ind.Update(new TValue(t0.AddMinutes(i),
100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / 20.0)), isNew: true);
100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / 20.0))), isNew: true);
}
// Anchor bar
+5 -5
View File
@@ -141,8 +141,8 @@ public sealed class HtDcphase : AbstractBase
double input1 = buffer[KEY_Q1];
DoHilbertTransform(buffer, KEY_JQ, input1, true, hilbertIdx, adjustedPrevPeriod);
q2 = 0.2 * (buffer[KEY_Q1] + buffer[KEY_JI]) + 0.8 * prevQ2;
i2 = 0.2 * (i1ForOddPrev3 - buffer[KEY_JQ]) + 0.8 * prevI2;
q2 = (0.2 * (buffer[KEY_Q1] + buffer[KEY_JI])) + (0.8 * prevQ2);
i2 = (0.2 * (i1ForOddPrev3 - buffer[KEY_JQ])) + (0.8 * prevI2);
i1ForEvenPrev3 = i1ForEvenPrev2;
i1ForEvenPrev2 = buffer[KEY_DETRENDER];
@@ -166,8 +166,8 @@ public sealed class HtDcphase : AbstractBase
hilbertIdx = 0;
}
q2 = 0.2 * (buffer[KEY_Q1] + buffer[KEY_JI]) + 0.8 * prevQ2;
i2 = 0.2 * (i1ForEvenPrev3 - buffer[KEY_JQ]) + 0.8 * prevI2;
q2 = (0.2 * (buffer[KEY_Q1] + buffer[KEY_JI])) + (0.8 * prevQ2);
i2 = (0.2 * (i1ForEvenPrev3 - buffer[KEY_JQ])) + (0.8 * prevI2);
i1ForOddPrev3 = i1ForOddPrev2;
i1ForOddPrev2 = buffer[KEY_DETRENDER];
@@ -296,7 +296,7 @@ public sealed class HtDcphase : AbstractBase
}
// Calculate smoothed price using WMA
double adjustedPrevPeriod = 0.075 * s.Period + 0.54;
double adjustedPrevPeriod = (0.075 * s.Period) + 0.54;
s.PeriodWMASub += price;
s.PeriodWMASub -= s.TrailingWMAValue;
@@ -133,7 +133,7 @@ public sealed class HtSineValidationTests : IDisposable
for (int i = 0; i < 100; i++)
{
ind.Update(new TValue(t0.AddMinutes(i),
100.0 + 10.0 * Math.Sin(2.0 * Math.PI * i / 20.0)), isNew: true);
100.0 + (10.0 * Math.Sin(2.0 * Math.PI * i / 20.0))), isNew: true);
}
// Anchor bar
+7 -7
View File
@@ -161,8 +161,8 @@ public sealed class HtSine : AbstractBase
double input1 = buffer[KEY_Q1];
DoHilbertTransform(buffer, KEY_JQ, input1, true, hilbertIdx, adjustedPrevPeriod);
q2 = 0.2 * (buffer[KEY_Q1] + buffer[KEY_JI]) + 0.8 * prevQ2;
i2 = 0.2 * (i1ForOddPrev3 - buffer[KEY_JQ]) + 0.8 * prevI2;
q2 = (0.2 * (buffer[KEY_Q1] + buffer[KEY_JI])) + (0.8 * prevQ2);
i2 = (0.2 * (i1ForOddPrev3 - buffer[KEY_JQ])) + (0.8 * prevI2);
// The variable I1 is the detrender delayed for 3 price bars.
i1ForEvenPrev3 = i1ForEvenPrev2;
@@ -187,8 +187,8 @@ public sealed class HtSine : AbstractBase
hilbertIdx = 0;
}
q2 = 0.2 * (buffer[KEY_Q1] + buffer[KEY_JI]) + 0.8 * prevQ2;
i2 = 0.2 * (i1ForEvenPrev3 - buffer[KEY_JQ]) + 0.8 * prevI2;
q2 = (0.2 * (buffer[KEY_Q1] + buffer[KEY_JI])) + (0.8 * prevQ2);
i2 = (0.2 * (i1ForEvenPrev3 - buffer[KEY_JQ])) + (0.8 * prevI2);
// The variable i1 is the detrender delayed for 3 price bars.
i1ForOddPrev3 = i1ForOddPrev2;
@@ -199,8 +199,8 @@ public sealed class HtSine : AbstractBase
private static void CalcSmoothedPeriod(
ref double re, double i2, double q2, ref double prevI2, ref double prevQ2, ref double im, ref double period)
{
re = Math.FusedMultiplyAdd(0.2, i2 * prevI2 + q2 * prevQ2, 0.8 * re);
im = Math.FusedMultiplyAdd(0.2, i2 * prevQ2 - q2 * prevI2, 0.8 * im);
re = Math.FusedMultiplyAdd(0.2, (i2 * prevI2) + (q2 * prevQ2), 0.8 * re);
im = Math.FusedMultiplyAdd(0.2, (i2 * prevQ2) - (q2 * prevI2), 0.8 * im);
prevQ2 = q2;
prevI2 = i2;
@@ -373,7 +373,7 @@ public sealed class HtSine : AbstractBase
}
// Calculate smoothed price using WMA
double adjustedPrevPeriod = 0.075 * s.Period + 0.54;
double adjustedPrevPeriod = (0.075 * s.Period) + 0.54;
s.PeriodWMASub += price;
s.PeriodWMASub -= s.TrailingWMAValue;