mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-23 21:18:04 +00:00
normalization of methods
This commit is contained in:
@@ -214,7 +214,7 @@ public class BbandsTests
|
||||
TSeries source = bars.Close;
|
||||
|
||||
// Act
|
||||
TSeries result = Bbands.Calculate(source, period: 5, multiplier: 2.0);
|
||||
TSeries result = Bbands.Batch(source, period: 5, multiplier: 2.0);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(source.Count, result.Count);
|
||||
@@ -236,9 +236,9 @@ public class BbandsTests
|
||||
double[] middleArray = new double[source.Count];
|
||||
double[] upperArray = new double[source.Count];
|
||||
double[] lowerArray = new double[source.Count];
|
||||
Bbands.Calculate(sourceArray.AsSpan(), middleArray, upperArray, lowerArray, period, multiplier);
|
||||
Bbands.Batch(sourceArray.AsSpan(), middleArray, upperArray, lowerArray, period, multiplier);
|
||||
|
||||
TSeries seriesResult = Bbands.Calculate(source, period, multiplier);
|
||||
TSeries seriesResult = Bbands.Batch(source, period, multiplier);
|
||||
|
||||
// Assert - Compare last 10 values
|
||||
for (int i = source.Count - 10; i < source.Count; i++)
|
||||
@@ -258,7 +258,7 @@ public class BbandsTests
|
||||
|
||||
// Act & Assert
|
||||
ArgumentException exception = Assert.Throws<ArgumentException>(
|
||||
() => Bbands.Calculate(sourceArr.AsSpan(), middleArr.AsSpan(), upperArr.AsSpan(), lowerArr.AsSpan()));
|
||||
() => Bbands.Batch(sourceArr.AsSpan(), middleArr.AsSpan(), upperArr.AsSpan(), lowerArr.AsSpan()));
|
||||
Assert.Equal("source", exception.ParamName);
|
||||
}
|
||||
|
||||
@@ -305,14 +305,14 @@ public class BbandsTests
|
||||
}
|
||||
|
||||
// Batch
|
||||
TSeries batchResult = Bbands.Calculate(source, period, multiplier);
|
||||
TSeries batchResult = Bbands.Batch(source, period, multiplier);
|
||||
|
||||
// Span - Copy arrays before using to avoid ref local lambda issue
|
||||
double[] sourceArray = source.Values.ToArray();
|
||||
double[] middleArray = new double[source.Count];
|
||||
double[] upperArray = new double[source.Count];
|
||||
double[] lowerArray = new double[source.Count];
|
||||
Bbands.Calculate(sourceArray.AsSpan(), middleArray, upperArray, lowerArray, period, multiplier);
|
||||
Bbands.Batch(sourceArray.AsSpan(), middleArray, upperArray, lowerArray, period, multiplier);
|
||||
|
||||
// Assert - Compare last 50 values (streaming only has last value)
|
||||
Assert.Equal(batchResult[^1].Value, streamingBbands.Middle.Value, precision: 8);
|
||||
|
||||
@@ -100,7 +100,7 @@ public sealed class BbandsValidationTests : IDisposable
|
||||
double[] qMiddle = new double[sourceData.Length];
|
||||
double[] qUpper = new double[sourceData.Length];
|
||||
double[] qLower = new double[sourceData.Length];
|
||||
Bbands.Calculate(sourceData.AsSpan(), qMiddle.AsSpan(), qUpper.AsSpan(), qLower.AsSpan(), period, multiplier);
|
||||
Bbands.Batch(sourceData.AsSpan(), qMiddle.AsSpan(), qUpper.AsSpan(), qLower.AsSpan(), period, multiplier);
|
||||
|
||||
// Calculate Skender Bollinger Bands
|
||||
var sResult = _testData.SkenderQuotes.GetBollingerBands(period, multiplier).ToList();
|
||||
@@ -215,7 +215,7 @@ public sealed class BbandsValidationTests : IDisposable
|
||||
double[] qMiddle = new double[sourceData.Length];
|
||||
double[] qUpper = new double[sourceData.Length];
|
||||
double[] qLower = new double[sourceData.Length];
|
||||
Bbands.Calculate(sourceData.AsSpan(), qMiddle.AsSpan(), qUpper.AsSpan(), qLower.AsSpan(), period, multiplier);
|
||||
Bbands.Batch(sourceData.AsSpan(), qMiddle.AsSpan(), qUpper.AsSpan(), qLower.AsSpan(), period, multiplier);
|
||||
|
||||
// Calculate TA-Lib Bollinger Bands
|
||||
var retCode = Functions.Bbands<double>(
|
||||
@@ -321,7 +321,7 @@ public sealed class BbandsValidationTests : IDisposable
|
||||
double[] qMiddle = new double[sourceData.Length];
|
||||
double[] qUpper = new double[sourceData.Length];
|
||||
double[] qLower = new double[sourceData.Length];
|
||||
Bbands.Calculate(sourceData.AsSpan(), qMiddle.AsSpan(), qUpper.AsSpan(), qLower.AsSpan(), period, multiplier);
|
||||
Bbands.Batch(sourceData.AsSpan(), qMiddle.AsSpan(), qUpper.AsSpan(), qLower.AsSpan(), period, multiplier);
|
||||
|
||||
// Calculate Tulip Bollinger Bands
|
||||
var bbandsIndicator = Tulip.Indicators.bbands;
|
||||
|
||||
@@ -181,7 +181,7 @@ public sealed class Bbands : AbstractBase
|
||||
Span<double> upperSpan = upperRented.AsSpan(0, len);
|
||||
Span<double> lowerSpan = lowerRented.AsSpan(0, len);
|
||||
|
||||
Calculate(sourceSpan, middleSpan, upperSpan, lowerSpan, _period, _multiplier);
|
||||
Batch(sourceSpan, middleSpan, upperSpan, lowerSpan, _period, _multiplier);
|
||||
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
@@ -230,7 +230,7 @@ public sealed class Bbands : AbstractBase
|
||||
/// <summary>
|
||||
/// Calculates Bollinger Bands for the entire series and returns the middle band series.
|
||||
/// </summary>
|
||||
public static TSeries Calculate(TSeries source, int period = DefaultPeriod, double multiplier = DefaultMultiplier)
|
||||
public static TSeries Batch(TSeries source, int period = DefaultPeriod, double multiplier = DefaultMultiplier)
|
||||
{
|
||||
Bbands bbands = new(period, multiplier);
|
||||
return bbands.Update(source);
|
||||
@@ -239,7 +239,7 @@ public sealed class Bbands : AbstractBase
|
||||
/// <summary>
|
||||
/// Calculates Bollinger Bands across all input values using SIMD-optimized operations where possible.
|
||||
/// </summary>
|
||||
public static void Calculate(
|
||||
public static void Batch(
|
||||
ReadOnlySpan<double> source,
|
||||
Span<double> middle,
|
||||
Span<double> upper,
|
||||
@@ -360,4 +360,12 @@ public sealed class Bbands : AbstractBase
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static (TSeries Results, Bbands Indicator) Calculate(TSeries source, int period = DefaultPeriod, double multiplier = DefaultMultiplier)
|
||||
{
|
||||
var indicator = new Bbands(period, multiplier);
|
||||
TSeries results = indicator.Update(source);
|
||||
return (results, indicator);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user