normalization of methods

This commit is contained in:
Miha Kralj
2026-02-10 21:33:16 -08:00
parent 915d7a007b
commit 6d6259a47d
527 changed files with 10525 additions and 2123 deletions
+5 -5
View File
@@ -279,7 +279,7 @@ public class StbandsTests
TBarSeries bars = gbm.Fetch(50, DateTime.UtcNow.Ticks, TimeSpan.FromMinutes(1));
// Act
TSeries result = Stbands.Calculate(bars, period: 5, multiplier: 2.0);
TSeries result = Stbands.Batch(bars, period: 5, multiplier: 2.0);
// Assert
Assert.Equal(bars.Count, result.Count);
@@ -302,7 +302,7 @@ public class StbandsTests
double[] trend = new double[bars.Count];
// Act
Stbands.Calculate(high.AsSpan(), low.AsSpan(), close.AsSpan(), upper.AsSpan(), lower.AsSpan(), trend.AsSpan(), period, multiplier);
Stbands.Batch(high.AsSpan(), low.AsSpan(), close.AsSpan(), upper.AsSpan(), lower.AsSpan(), trend.AsSpan(), period, multiplier);
// Assert
for (int i = 0; i < bars.Count; i++)
@@ -327,7 +327,7 @@ public class StbandsTests
// Act & Assert
ArgumentException exception = Assert.Throws<ArgumentException>(
() => Stbands.Calculate(high.AsSpan(), low.AsSpan(), close.AsSpan(), upper.AsSpan(), lower.AsSpan(), trend.AsSpan()));
() => Stbands.Batch(high.AsSpan(), low.AsSpan(), close.AsSpan(), upper.AsSpan(), lower.AsSpan(), trend.AsSpan()));
Assert.Equal("high", exception.ParamName);
}
@@ -348,7 +348,7 @@ public class StbandsTests
}
// Batch
TSeries batchResult = Stbands.Calculate(bars, period, multiplier);
TSeries batchResult = Stbands.Batch(bars, period, multiplier);
// Assert - Last values should match
Assert.Equal(batchResult[^1].Value, streamingStbands.Last.Value, precision: 8);
@@ -377,7 +377,7 @@ public class StbandsTests
double[] upper = new double[bars.Count];
double[] lower = new double[bars.Count];
double[] trend = new double[bars.Count];
Stbands.Calculate(high.AsSpan(), low.AsSpan(), close.AsSpan(), upper.AsSpan(), lower.AsSpan(), trend.AsSpan(), period, multiplier);
Stbands.Batch(high.AsSpan(), low.AsSpan(), close.AsSpan(), upper.AsSpan(), lower.AsSpan(), trend.AsSpan(), period, multiplier);
// Assert - Last values should match
Assert.Equal(upper[^1], streamingStbands.Upper.Value, precision: 8);
@@ -69,7 +69,7 @@ public sealed class StbandsValidationTests : IDisposable
}
// Batch mode
var batchResult = Stbands.Calculate(bars, period, multiplier);
var batchResult = Stbands.Batch(bars, period, multiplier);
// Compare last 100 values
int compareCount = Math.Min(100, bars.Count - period);
@@ -118,7 +118,7 @@ public sealed class StbandsValidationTests : IDisposable
double[] spanLower = new double[bars.Count];
double[] spanTrend = new double[bars.Count];
Stbands.Calculate(high.AsSpan(), low.AsSpan(), close.AsSpan(),
Stbands.Batch(high.AsSpan(), low.AsSpan(), close.AsSpan(),
spanUpper.AsSpan(), spanLower.AsSpan(), spanTrend.AsSpan(), period, multiplier);
// Compare last 100 values
@@ -155,7 +155,7 @@ public sealed class StbandsValidationTests : IDisposable
double[] lower = new double[bars.Count];
double[] trend = new double[bars.Count];
Stbands.Calculate(high.AsSpan(), low.AsSpan(), close.AsSpan(),
Stbands.Batch(high.AsSpan(), low.AsSpan(), close.AsSpan(),
upper.AsSpan(), lower.AsSpan(), trend.AsSpan(), period, multiplier);
// Verify Upper >= Lower for all points
@@ -192,7 +192,7 @@ public sealed class StbandsValidationTests : IDisposable
double[] lower = new double[bars.Count];
double[] trend = new double[bars.Count];
Stbands.Calculate(high.AsSpan(), low.AsSpan(), close.AsSpan(),
Stbands.Batch(high.AsSpan(), low.AsSpan(), close.AsSpan(),
upper.AsSpan(), lower.AsSpan(), trend.AsSpan(), period, multiplier);
int trendChanges = 0;
+10 -2
View File
@@ -286,7 +286,7 @@ public sealed class Stbands : AbstractBase
/// <summary>
/// Calculates Super Trend Bands for the entire bar series.
/// </summary>
public static TSeries Calculate(TBarSeries source, int period = DefaultPeriod, double multiplier = DefaultMultiplier)
public static TSeries Batch(TBarSeries source, int period = DefaultPeriod, double multiplier = DefaultMultiplier)
{
Stbands stbands = new(period, multiplier);
return stbands.Update(source);
@@ -295,7 +295,7 @@ public sealed class Stbands : AbstractBase
/// <summary>
/// Calculates Super Trend Bands across OHLC data using spans.
/// </summary>
public static void Calculate(
public static void Batch(
ReadOnlySpan<double> high,
ReadOnlySpan<double> low,
ReadOnlySpan<double> close,
@@ -399,4 +399,12 @@ public sealed class Stbands : AbstractBase
prevClose = c;
}
}
public static (TSeries Results, Stbands Indicator) Calculate(TBarSeries source, int period = DefaultPeriod, double multiplier = DefaultMultiplier)
{
var indicator = new Stbands(period, multiplier);
TSeries results = indicator.Update(source);
return (results, indicator);
}
}