mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-18 02:28:05 +00:00
[CodeFactor] Apply fixes to commit 0606491
This commit is contained in:
@@ -156,8 +156,8 @@ public class AdoscTests
|
||||
// Apply 5 corrections with different values
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
var correctedBar = new TBar(bar20.Time, bar20.Open * (1 + i * 0.01), bar20.High * (1 + i * 0.01),
|
||||
bar20.Low * (1 + i * 0.01), bar20.Close * (1 + i * 0.01), bar20.Volume);
|
||||
var correctedBar = new TBar(bar20.Time, bar20.Open * (1 + (i * 0.01)), bar20.High * (1 + (i * 0.01)),
|
||||
bar20.Low * (1 + (i * 0.01)), bar20.Close * (1 + (i * 0.01)), bar20.Volume);
|
||||
adosc.Update(correctedBar, isNew: false);
|
||||
}
|
||||
|
||||
|
||||
@@ -320,8 +320,8 @@ public class EomTests
|
||||
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
high[i] = 110 + i * 0.1;
|
||||
low[i] = 90 + i * 0.1;
|
||||
high[i] = 110 + (i * 0.1);
|
||||
low[i] = 90 + (i * 0.1);
|
||||
volume[i] = 100000;
|
||||
}
|
||||
|
||||
@@ -365,5 +365,4 @@ public class EomTests
|
||||
// Different volume scales should produce different results
|
||||
Assert.NotEqual(eom1.Last.Value, eom2.Last.Value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ public class EvwmaValidationTests
|
||||
// prevResult = 4775/45
|
||||
// result = (35 * (4775/45) + 25 * 120) / 60
|
||||
double prev = 4775.0 / 45.0;
|
||||
double expected = (35.0 * prev + 25.0 * 120.0) / 60.0;
|
||||
double expected = ((35.0 * prev) + (25.0 * 120.0)) / 60.0;
|
||||
Assert.Equal(expected, r3.Value, 10);
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ public class EvwmaValidationTests
|
||||
var now = DateTime.UtcNow;
|
||||
for (int i = 0; i < 50; i++)
|
||||
{
|
||||
bars.Add(new TBar(now.AddMinutes(i), 42.0, 42.0, 42.0, 42.0, 100 + i * 10));
|
||||
bars.Add(new TBar(now.AddMinutes(i), 42.0, 42.0, 42.0, 42.0, 100 + (i * 10)));
|
||||
}
|
||||
|
||||
var result = Evwma.Batch(bars, period);
|
||||
|
||||
@@ -323,9 +323,9 @@ public class IiiTests
|
||||
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
high[i] = 110 + i * 0.1;
|
||||
low[i] = 90 + i * 0.1;
|
||||
close[i] = 100 + i * 0.1;
|
||||
high[i] = 110 + (i * 0.1);
|
||||
low[i] = 90 + (i * 0.1);
|
||||
close[i] = 100 + (i * 0.1);
|
||||
volume[i] = 100000;
|
||||
}
|
||||
|
||||
|
||||
@@ -79,8 +79,8 @@ public class KvoTests
|
||||
// Simulate uptrend with increasing prices and volume
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
double basePrice = 100 + i * 2;
|
||||
kvo.Update(new TBar(time.AddMinutes(i), basePrice, basePrice + 5, basePrice - 2, basePrice + 3, 1000000 + i * 100000));
|
||||
double basePrice = 100 + (i * 2);
|
||||
kvo.Update(new TBar(time.AddMinutes(i), basePrice, basePrice + 5, basePrice - 2, basePrice + 3, 1000000 + (i * 100000)));
|
||||
}
|
||||
|
||||
// After warmup, KVO should have finite values
|
||||
@@ -96,8 +96,8 @@ public class KvoTests
|
||||
// Simulate downtrend with decreasing prices
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
double basePrice = 500 - i * 3;
|
||||
kvo.Update(new TBar(time.AddMinutes(i), basePrice, basePrice + 2, basePrice - 5, basePrice - 3, 1000000 + i * 100000));
|
||||
double basePrice = 500 - (i * 3);
|
||||
kvo.Update(new TBar(time.AddMinutes(i), basePrice, basePrice + 2, basePrice - 5, basePrice - 3, 1000000 + (i * 100000)));
|
||||
}
|
||||
|
||||
// After warmup, KVO should have finite values
|
||||
@@ -145,7 +145,7 @@ public class KvoTests
|
||||
// Build up state
|
||||
for (int i = 0; i < 15; i++)
|
||||
{
|
||||
kvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + i * 10000), isNew: true);
|
||||
kvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + (i * 10000)), isNew: true);
|
||||
}
|
||||
|
||||
// New bar
|
||||
@@ -232,7 +232,7 @@ public class KvoTests
|
||||
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
kvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + i * 10000));
|
||||
kvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + (i * 10000)));
|
||||
}
|
||||
|
||||
Assert.True(double.IsFinite(kvo.Signal.Value));
|
||||
|
||||
@@ -69,7 +69,7 @@ public class MfiTests
|
||||
// Consistent uptrend should push MFI toward higher values
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
double basePrice = 100 + i * 5; // Consistent price increase
|
||||
double basePrice = 100 + (i * 5); // Consistent price increase
|
||||
mfi.Update(new TBar(time.AddMinutes(i), basePrice, basePrice + 2, basePrice - 1, basePrice + 1, 100000));
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public class MfiTests
|
||||
// Consistent downtrend should push MFI toward lower values
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
double basePrice = 500 - i * 5; // Consistent price decrease
|
||||
double basePrice = 500 - (i * 5); // Consistent price decrease
|
||||
mfi.Update(new TBar(time.AddMinutes(i), basePrice, basePrice + 1, basePrice - 2, basePrice - 1, 100000));
|
||||
}
|
||||
|
||||
|
||||
@@ -224,7 +224,7 @@ public class NviTests
|
||||
// Process some valid bars first
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
nvi.Update(new TBar(time.AddMinutes(i), 100, 105, 95, 102, 100000 - i * 1000));
|
||||
nvi.Update(new TBar(time.AddMinutes(i), 100, 105, 95, 102, 100000 - (i * 1000)));
|
||||
}
|
||||
|
||||
// Process bar with NaN volume
|
||||
@@ -254,7 +254,7 @@ public class NviTests
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
nvi.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 - i * 5000), isNew: true);
|
||||
nvi.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 - (i * 5000)), isNew: true);
|
||||
}
|
||||
|
||||
Assert.True(nvi.IsHot);
|
||||
|
||||
@@ -74,7 +74,7 @@ public class PvdIndicatorTests
|
||||
var now = DateTime.UtcNow;
|
||||
for (int i = 0; i < 30; i++)
|
||||
{
|
||||
double close = 100 + i * 0.5;
|
||||
double close = 100 + (i * 0.5);
|
||||
double volume = 100000 + (i % 3 == 0 ? 20000 : -10000);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), close - 1, close + 1, close - 2, close, volume);
|
||||
|
||||
@@ -213,7 +213,7 @@ public class PvdIndicatorTests
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
double close = 100 + i;
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), close - 1, close + 2, close - 2, close, 100000 + i * 1000);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), close - 1, close + 2, close - 2, close, 100000 + (i * 1000));
|
||||
indicator.ProcessUpdate(new UpdateArgs(i == 0 ? UpdateReason.HistoricalBar : UpdateReason.NewBar));
|
||||
}
|
||||
|
||||
|
||||
@@ -285,7 +285,7 @@ public class PvdTests
|
||||
// Build up state
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
pvd.Update(new TBar(time.AddMinutes(i), 100.0 + i, 100.0 + i, 100.0 + i, 100.0 + i, 1000.0 + i * 10), isNew: true);
|
||||
pvd.Update(new TBar(time.AddMinutes(i), 100.0 + i, 100.0 + i, 100.0 + i, 100.0 + i, 1000.0 + (i * 10)), isNew: true);
|
||||
}
|
||||
|
||||
_ = pvd.Last.Value;
|
||||
@@ -307,7 +307,7 @@ public class PvdTests
|
||||
// Build up state
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
pvd.Update(new TBar(time.AddMinutes(i), 100.0 + i, 100.0 + i, 100.0 + i, 100.0 + i, 1000.0 + i * 10), isNew: true);
|
||||
pvd.Update(new TBar(time.AddMinutes(i), 100.0 + i, 100.0 + i, 100.0 + i, 100.0 + i, 1000.0 + (i * 10)), isNew: true);
|
||||
}
|
||||
|
||||
// Update with Infinity
|
||||
@@ -325,7 +325,7 @@ public class PvdTests
|
||||
// Build up state
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
pvd.Update(new TBar(time.AddMinutes(i), 100.0 + i, 100.0 + i, 100.0 + i, 100.0 + i, 1000.0 + i * 10), isNew: true);
|
||||
pvd.Update(new TBar(time.AddMinutes(i), 100.0 + i, 100.0 + i, 100.0 + i, 100.0 + i, 1000.0 + (i * 10)), isNew: true);
|
||||
}
|
||||
|
||||
// Update with negative infinity
|
||||
@@ -470,8 +470,8 @@ public class PvdTests
|
||||
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
closes[i] = 100.0 + i * 0.01;
|
||||
volumes[i] = 1000000.0 + i * 100;
|
||||
closes[i] = 100.0 + (i * 0.01);
|
||||
volumes[i] = 1000000.0 + (i * 100);
|
||||
}
|
||||
|
||||
// Should not stack overflow
|
||||
|
||||
@@ -264,7 +264,7 @@ public class PvdValidationTests
|
||||
// Mix of zero and non-zero volumes
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
double volume = i % 3 == 0 ? 0.0 : 1000.0 + i * 10;
|
||||
double volume = i % 3 == 0 ? 0.0 : 1000.0 + (i * 10);
|
||||
bars.Add(new TBar(time.AddMinutes(i), 100.0 + i, 101.0 + i, 99.0 + i, 100.5 + i, volume));
|
||||
}
|
||||
|
||||
|
||||
@@ -224,7 +224,7 @@ public class PviTests
|
||||
// Process some valid bars first
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
pvi.Update(new TBar(time.AddMinutes(i), 100, 105, 95, 102, 100000 + i * 1000));
|
||||
pvi.Update(new TBar(time.AddMinutes(i), 100, 105, 95, 102, 100000 + (i * 1000)));
|
||||
}
|
||||
|
||||
// Process bar with NaN volume
|
||||
@@ -254,7 +254,7 @@ public class PviTests
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
pvi.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + i * 5000), isNew: true);
|
||||
pvi.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + (i * 5000)), isNew: true);
|
||||
}
|
||||
|
||||
Assert.True(pvi.IsHot);
|
||||
|
||||
@@ -156,7 +156,7 @@ public class PvoIndicatorTests
|
||||
for (int i = 0; i < 15; i++)
|
||||
{
|
||||
// Start high and decrease
|
||||
double volume = 10000 / (1.0 + i * 0.3);
|
||||
double volume = 10000 / (1.0 + (i * 0.3));
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), 100, 110, 90, 105, volume);
|
||||
indicator.ProcessUpdate(new UpdateArgs(UpdateReason.HistoricalBar));
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public class PvoTests
|
||||
// Then increasing volume - fast EMA will be higher than slow
|
||||
for (int i = 50; i < 100; i++)
|
||||
{
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100, 105, 95, 102, 100000 + (i - 50) * 50000));
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100, 105, 95, 102, 100000 + ((i - 50) * 50000)));
|
||||
}
|
||||
|
||||
// Fast EMA responds quicker to volume increase, should be positive
|
||||
@@ -108,7 +108,7 @@ public class PvoTests
|
||||
// Then decreasing volume - fast EMA will be lower than slow
|
||||
for (int i = 50; i < 100; i++)
|
||||
{
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100, 105, 95, 102, 1000000 - (i - 50) * 15000));
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100, 105, 95, 102, 1000000 - ((i - 50) * 15000)));
|
||||
}
|
||||
|
||||
// Fast EMA responds quicker to volume decrease, should be negative
|
||||
@@ -156,7 +156,7 @@ public class PvoTests
|
||||
// Build up state
|
||||
for (int i = 0; i < 15; i++)
|
||||
{
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + i * 10000), isNew: true);
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + (i * 10000)), isNew: true);
|
||||
}
|
||||
|
||||
// New bar
|
||||
@@ -227,7 +227,7 @@ public class PvoTests
|
||||
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + i * 10000));
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + (i * 10000)));
|
||||
}
|
||||
|
||||
Assert.True(double.IsFinite(pvo.Signal.Value));
|
||||
@@ -242,7 +242,7 @@ public class PvoTests
|
||||
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + i * 10000));
|
||||
pvo.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + (i * 10000)));
|
||||
}
|
||||
|
||||
Assert.True(double.IsFinite(pvo.Histogram.Value));
|
||||
|
||||
@@ -132,7 +132,7 @@ public class PvrTests
|
||||
// Build up state
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
pvr.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + i * 10000), isNew: true);
|
||||
pvr.Update(new TBar(time.AddMinutes(i), 100 + i, 110 + i, 90 + i, 105 + i, 100000 + (i * 10000)), isNew: true);
|
||||
}
|
||||
|
||||
// New bar
|
||||
|
||||
@@ -105,11 +105,11 @@ public class PvtValidationTests
|
||||
Assert.Equal(200.0, result1.Value, 1e-10);
|
||||
|
||||
var result2 = pvt.Update(new TBar(time.AddMinutes(2), 110, 112, 103, 105, 1500));
|
||||
double expected2 = 200 + 1500 * (-5.0 / 110.0); // = 131.8181818...
|
||||
double expected2 = 200 + (1500 * (-5.0 / 110.0)); // = 131.8181818...
|
||||
Assert.Equal(expected2, result2.Value, 1e-10);
|
||||
|
||||
var result3 = pvt.Update(new TBar(time.AddMinutes(3), 105, 118, 105, 115, 2500));
|
||||
double expected3 = expected2 + 2500 * (10.0 / 105.0); // = 369.9134...
|
||||
double expected3 = expected2 + (2500 * (10.0 / 105.0)); // = 369.9134...
|
||||
Assert.Equal(expected3, result3.Value, 1e-10);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ public class TwapIndicatorTests
|
||||
var now = DateTime.UtcNow;
|
||||
for (int i = 0; i < 30; i++)
|
||||
{
|
||||
double close = 100 + i * 0.5;
|
||||
double close = 100 + (i * 0.5);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), close - 2, close + 2, close - 3, close, 100000);
|
||||
|
||||
// Process update for each bar to simulate history loading
|
||||
@@ -191,7 +191,7 @@ public class TwapIndicatorTests
|
||||
// Add 10 bars to both
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
double close = 100 + i * 2;
|
||||
double close = 100 + (i * 2);
|
||||
noReset.HistoricalData.AddBar(now.AddMinutes(i), close - 2, close + 2, close - 3, close, 10000);
|
||||
period5.HistoricalData.AddBar(now.AddMinutes(i), close - 2, close + 2, close - 3, close, 10000);
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ public class VaIndicatorTests
|
||||
var now = DateTime.UtcNow;
|
||||
for (int i = 0; i < 30; i++)
|
||||
{
|
||||
double close = 100 + i * 0.5;
|
||||
double close = 100 + (i * 0.5);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), close - 2, close + 2, close - 3, close, 100000);
|
||||
|
||||
var args = new UpdateArgs(UpdateReason.HistoricalBar);
|
||||
|
||||
@@ -89,7 +89,7 @@ public class VaValidationTests
|
||||
// Bar 2: close below midpoint
|
||||
var bar2 = new TBar(DateTime.UtcNow.AddMinutes(1), 101, 101, 99, 98, 500);
|
||||
var r2 = va.Update(bar2, isNew: true);
|
||||
double expectedVa2 = expectedVa1 + 500 * (98 - 100.0); // 2000 + (-1000) = 1000
|
||||
double expectedVa2 = expectedVa1 + (500 * (98 - 100.0)); // 2000 + (-1000) = 1000
|
||||
|
||||
Assert.Equal(expectedVa1, r1.Value, precision: 10);
|
||||
Assert.Equal(expectedVa2, r2.Value, precision: 10);
|
||||
|
||||
@@ -60,7 +60,7 @@ public class VfIndicatorTests
|
||||
var now = DateTime.UtcNow;
|
||||
for (int i = 0; i < 30; i++)
|
||||
{
|
||||
double close = 100 + i * 0.5;
|
||||
double close = 100 + (i * 0.5);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), close - 2, close + 2, close - 3, close, 100000);
|
||||
|
||||
var args = new UpdateArgs(UpdateReason.HistoricalBar);
|
||||
@@ -284,7 +284,7 @@ public class VfIndicatorTests
|
||||
// Mix of up and down days
|
||||
for (int i = 0; i < 50; i++)
|
||||
{
|
||||
double close = 100 + Math.Sin(i * 0.5) * 10;
|
||||
double close = 100 + (Math.Sin(i * 0.5) * 10);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), close - 2, close + 2, close - 3, close, 10000);
|
||||
|
||||
var args = i == 0
|
||||
|
||||
@@ -70,7 +70,7 @@ public class VoIndicatorTests
|
||||
var now = DateTime.UtcNow;
|
||||
for (int i = 0; i < 30; i++)
|
||||
{
|
||||
double volume = 100000 + i * 1000;
|
||||
double volume = 100000 + (i * 1000);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), 100, 110, 90, 105, volume);
|
||||
|
||||
var args = new UpdateArgs(UpdateReason.HistoricalBar);
|
||||
@@ -139,7 +139,7 @@ public class VoIndicatorTests
|
||||
// Volume increases over time - short MA will exceed long MA
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
double volume = 10000 + i * 5000; // Increasing volume
|
||||
double volume = 10000 + (i * 5000); // Increasing volume
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), 100, 105, 95, 100, volume);
|
||||
|
||||
var args = i == 0
|
||||
@@ -163,7 +163,7 @@ public class VoIndicatorTests
|
||||
// Volume decreases over time - short MA will be below long MA
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
double volume = 100000 - i * 4000; // Decreasing volume
|
||||
double volume = 100000 - (i * 4000); // Decreasing volume
|
||||
volume = Math.Max(volume, 1000); // Keep positive
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), 100, 105, 95, 100, volume);
|
||||
|
||||
@@ -226,7 +226,7 @@ public class VoIndicatorTests
|
||||
// Add same data to both
|
||||
for (int i = 0; i < 50; i++)
|
||||
{
|
||||
double volume = 50000 + Math.Sin(i * 0.3) * 20000;
|
||||
double volume = 50000 + (Math.Sin(i * 0.3) * 20000);
|
||||
shortPeriods.HistoricalData.AddBar(now.AddMinutes(i), 100, 105, 95, 100, volume);
|
||||
longPeriods.HistoricalData.AddBar(now.AddMinutes(i), 100, 105, 95, 100, volume);
|
||||
|
||||
@@ -286,7 +286,7 @@ public class VoIndicatorTests
|
||||
// Oscillating volume pattern
|
||||
for (int i = 0; i < 50; i++)
|
||||
{
|
||||
double volume = 50000 + Math.Sin(i * 0.5) * 30000;
|
||||
double volume = 50000 + (Math.Sin(i * 0.5) * 30000);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), 100, 105, 95, 100, volume);
|
||||
|
||||
var args = i == 0
|
||||
|
||||
@@ -198,7 +198,7 @@ public class VoTests
|
||||
// Add several bars
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
var bar = new TBar(now.AddMinutes(i), 100, 100, 100, 100, 500 + i * 10);
|
||||
var bar = new TBar(now.AddMinutes(i), 100, 100, 100, 100, 500 + (i * 10));
|
||||
vo.Update(bar, isNew: true);
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ public class VoTests
|
||||
// Apply multiple corrections
|
||||
for (int j = 0; j < 5; j++)
|
||||
{
|
||||
var correctionBar = new TBar(now.AddMinutes(9), 100, 100, 100, 100, 700 + j * 10);
|
||||
var correctionBar = new TBar(now.AddMinutes(9), 100, 100, 100, 100, 700 + (j * 10));
|
||||
vo.Update(correctionBar, isNew: false);
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ public class VoValidationTests
|
||||
// Feed bars with steadily increasing volume
|
||||
for (int i = 0; i < 50; i++)
|
||||
{
|
||||
double volume = 1000 + i * 100; // increasing
|
||||
double volume = 1000 + (i * 100); // increasing
|
||||
var bar = new TBar(
|
||||
DateTime.UtcNow.AddMinutes(i),
|
||||
100, 101, 99, 100, volume);
|
||||
@@ -76,7 +76,7 @@ public class VoValidationTests
|
||||
// Feed bars with steadily decreasing volume
|
||||
for (int i = 0; i < 50; i++)
|
||||
{
|
||||
double volume = 10000 - i * 100; // decreasing
|
||||
double volume = 10000 - (i * 100); // decreasing
|
||||
var bar = new TBar(
|
||||
DateTime.UtcNow.AddMinutes(i),
|
||||
100, 101, 99, 100, volume);
|
||||
|
||||
@@ -71,7 +71,7 @@ public class VrocIndicatorTests
|
||||
var now = DateTime.UtcNow;
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
double volume = 100000 + i * 1000;
|
||||
double volume = 100000 + (i * 1000);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), 100, 110, 90, 105, volume);
|
||||
|
||||
var args = new UpdateArgs(UpdateReason.HistoricalBar);
|
||||
@@ -217,7 +217,7 @@ public class VrocIndicatorTests
|
||||
// Increasing volumes
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
double volume = 1000 + i * 100;
|
||||
double volume = 1000 + (i * 100);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), 100, 105, 95, 100, volume);
|
||||
var args = i == 0
|
||||
? new UpdateArgs(UpdateReason.HistoricalBar)
|
||||
@@ -240,7 +240,7 @@ public class VrocIndicatorTests
|
||||
// Decreasing volumes
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
double volume = 5000 - i * 100;
|
||||
double volume = 5000 - (i * 100);
|
||||
indicator.HistoricalData.AddBar(now.AddMinutes(i), 100, 105, 95, 100, volume);
|
||||
var args = i == 0
|
||||
? new UpdateArgs(UpdateReason.HistoricalBar)
|
||||
|
||||
@@ -171,7 +171,7 @@ public class VrocTests
|
||||
// Increasing volumes
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
var bar = new TBar(now.AddMinutes(i), 100, 100, 100, 100, 1000 + i * 100);
|
||||
var bar = new TBar(now.AddMinutes(i), 100, 100, 100, 100, 1000 + (i * 100));
|
||||
vroc.Update(bar, isNew: true);
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ public class VrocTests
|
||||
// Decreasing volumes
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
var bar = new TBar(now.AddMinutes(i), 100, 100, 100, 100, 2000 - i * 100);
|
||||
var bar = new TBar(now.AddMinutes(i), 100, 100, 100, 100, 2000 - (i * 100));
|
||||
vroc.Update(bar, isNew: true);
|
||||
}
|
||||
|
||||
@@ -257,7 +257,7 @@ public class VrocTests
|
||||
// Add several bars
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
var bar = new TBar(now.AddMinutes(i), 100, 100, 100, 100, 1000 + i * 50);
|
||||
var bar = new TBar(now.AddMinutes(i), 100, 100, 100, 100, 1000 + (i * 50));
|
||||
vroc.Update(bar, isNew: true);
|
||||
}
|
||||
|
||||
@@ -266,7 +266,7 @@ public class VrocTests
|
||||
// Apply multiple corrections
|
||||
for (int j = 0; j < 5; j++)
|
||||
{
|
||||
var correctionBar = new TBar(now.AddMinutes(9), 100, 100, 100, 100, 2000 + j * 100);
|
||||
var correctionBar = new TBar(now.AddMinutes(9), 100, 100, 100, 100, 2000 + (j * 100));
|
||||
vroc.Update(correctionBar, isNew: false);
|
||||
}
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ public class VrocValidationTests
|
||||
{
|
||||
var bar = new TBar(
|
||||
DateTime.UtcNow.AddMinutes(i),
|
||||
100, 101, 99, 100, 1000 + i * 100);
|
||||
100, 101, 99, 100, 1000 + (i * 100));
|
||||
var result = vroc.Update(bar, isNew: true);
|
||||
Assert.Equal(0.0, result.Value, precision: 10);
|
||||
}
|
||||
@@ -115,7 +115,7 @@ public class VrocValidationTests
|
||||
// Feed steadily increasing volume
|
||||
for (int i = 0; i < 50; i++)
|
||||
{
|
||||
double volume = 1000 + i * 200; // increases by 200 each bar
|
||||
double volume = 1000 + (i * 200); // increases by 200 each bar
|
||||
var bar = new TBar(
|
||||
DateTime.UtcNow.AddMinutes(i),
|
||||
100, 101, 99, 100, volume);
|
||||
@@ -136,7 +136,7 @@ public class VrocValidationTests
|
||||
// Feed steadily decreasing volume
|
||||
for (int i = 0; i < 50; i++)
|
||||
{
|
||||
double volume = 20000 - i * 200; // decreases by 200 each bar
|
||||
double volume = 20000 - (i * 200); // decreases by 200 each bar
|
||||
var bar = new TBar(
|
||||
DateTime.UtcNow.AddMinutes(i),
|
||||
100, 101, 99, 100, volume);
|
||||
|
||||
@@ -137,7 +137,7 @@ public class VwadValidationTests
|
||||
|
||||
// Bar 2: sumVol=450, volWeight=150/450=0.333, MFM=-0.333, weightedMfv=150*(-0.333)*0.333=-16.67
|
||||
// cumVwad = 44.4 - 16.67 = 27.8
|
||||
double expectedBar2 = expectedBar1 + 150 * (-1.0 / 3.0) * (150.0 / 450.0);
|
||||
double expectedBar2 = expectedBar1 + (150 * (-1.0 / 3.0) * (150.0 / 450.0));
|
||||
Assert.Equal(expectedBar2, results[2], 6);
|
||||
}
|
||||
|
||||
|
||||
@@ -129,12 +129,12 @@ public class VwapValidationTests
|
||||
|
||||
// Bar 1: VWAP = (11*100 + 13.667*200) / 300 = (1100 + 2733.33) / 300 = 12.778
|
||||
double tp1 = (15.0 + 12.0 + 14.0) / 3.0;
|
||||
double expectedBar1 = (tp0 * 100 + tp1 * 200) / 300.0;
|
||||
double expectedBar1 = ((tp0 * 100) + (tp1 * 200)) / 300.0;
|
||||
Assert.Equal(expectedBar1, results[1], 6);
|
||||
|
||||
// Bar 2: VWAP = (11*100 + 13.667*200 + 12.333*150) / 450
|
||||
double tp2 = (14.0 + 11.0 + 12.0) / 3.0;
|
||||
double expectedBar2 = (tp0 * 100 + tp1 * 200 + tp2 * 150) / 450.0;
|
||||
double expectedBar2 = ((tp0 * 100) + (tp1 * 200) + (tp2 * 150)) / 450.0;
|
||||
Assert.Equal(expectedBar2, results[2], 6);
|
||||
}
|
||||
|
||||
@@ -156,7 +156,7 @@ public class VwapValidationTests
|
||||
var result = vwap.Update(bars[1]);
|
||||
|
||||
// VWAP = (10*1000 + 20*100) / 1100 = 12000/1100 = 10.909
|
||||
double expected = (10.0 * 1000.0 + 20.0 * 100.0) / 1100.0;
|
||||
double expected = ((10.0 * 1000.0) + (20.0 * 100.0)) / 1100.0;
|
||||
Assert.Equal(expected, result.Value, 6);
|
||||
|
||||
// VWAP should be much closer to 10 than to 20
|
||||
@@ -218,7 +218,7 @@ public class VwapValidationTests
|
||||
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
var bar = new TBar(DateTime.UtcNow.AddMinutes(i), 50, 50, 50, 50, 1000 + i * 10);
|
||||
var bar = new TBar(DateTime.UtcNow.AddMinutes(i), 50, 50, 50, 50, 1000 + (i * 10));
|
||||
results.Add(vwap.Update(bar).Value);
|
||||
}
|
||||
|
||||
|
||||
@@ -269,11 +269,11 @@ public class VwmaValidationTests
|
||||
Assert.Equal(10.0, results[0], 6);
|
||||
|
||||
// Bar 1: VWMA = (10*100 + 20*200) / 300 = 5000/300 = 16.667
|
||||
double expectedBar1 = (10.0 * 100 + 20.0 * 200) / 300.0;
|
||||
double expectedBar1 = ((10.0 * 100) + (20.0 * 200)) / 300.0;
|
||||
Assert.Equal(expectedBar1, results[1], 6);
|
||||
|
||||
// Bar 2: VWMA = (10*100 + 20*200 + 30*150) / 450 = 9500/450 = 21.111
|
||||
double expectedBar2 = (10.0 * 100 + 20.0 * 200 + 30.0 * 150) / 450.0;
|
||||
double expectedBar2 = ((10.0 * 100) + (20.0 * 200) + (30.0 * 150)) / 450.0;
|
||||
Assert.Equal(expectedBar2, results[2], 6);
|
||||
}
|
||||
|
||||
@@ -309,7 +309,7 @@ public class VwmaValidationTests
|
||||
var result = vwma.Update(new TBar(DateTime.UtcNow.AddMinutes(1), 20, 20, 20, 20, 100));
|
||||
|
||||
// VWMA = (10*1000 + 20*100) / 1100 = 12000/1100 = 10.909
|
||||
double expected = (10.0 * 1000.0 + 20.0 * 100.0) / 1100.0;
|
||||
double expected = ((10.0 * 1000.0) + (20.0 * 100.0)) / 1100.0;
|
||||
Assert.Equal(expected, result.Value, 6);
|
||||
|
||||
// VWMA should be much closer to 10 than to 20
|
||||
@@ -351,7 +351,7 @@ public class VwmaValidationTests
|
||||
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
var bar = new TBar(DateTime.UtcNow.AddMinutes(i), 50, 50, 50, 50, 1000 + i * 10);
|
||||
var bar = new TBar(DateTime.UtcNow.AddMinutes(i), 50, 50, 50, 50, 1000 + (i * 10));
|
||||
results.Add(vwma.Update(bar).Value);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user