mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-25 13:58:04 +00:00
normalization of methods
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user