mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-21 20:18:05 +00:00
normalization of methods
This commit is contained in:
@@ -154,7 +154,7 @@ public class ChangeTests
|
||||
public void Change_Batch_MatchesStreaming()
|
||||
{
|
||||
int period = 5;
|
||||
var batchResult = Change.Calculate(_source, period);
|
||||
var batchResult = Change.Batch(_source, period);
|
||||
var indicator = new Change(period);
|
||||
|
||||
for (int i = 0; i < _source.Count; i++)
|
||||
@@ -185,8 +185,8 @@ public class ChangeTests
|
||||
var values = _source.Values.ToArray();
|
||||
var output = new double[values.Length];
|
||||
|
||||
Change.Calculate(values, output, period);
|
||||
var batchResult = Change.Calculate(_source, period);
|
||||
Change.Batch(values, output, period);
|
||||
var batchResult = Change.Batch(_source, period);
|
||||
|
||||
for (int i = 0; i < values.Length; i++)
|
||||
{
|
||||
@@ -200,9 +200,9 @@ public class ChangeTests
|
||||
var source = new double[10];
|
||||
var output = new double[5];
|
||||
|
||||
Assert.Throws<ArgumentException>(() => Change.Calculate(ReadOnlySpan<double>.Empty, output, 1));
|
||||
Assert.Throws<ArgumentException>(() => Change.Calculate(source, output, 1));
|
||||
Assert.Throws<ArgumentException>(() => Change.Calculate(source, new double[10], 0));
|
||||
Assert.Throws<ArgumentException>(() => Change.Batch(ReadOnlySpan<double>.Empty, output, 1));
|
||||
Assert.Throws<ArgumentException>(() => Change.Batch(source, output, 1));
|
||||
Assert.Throws<ArgumentException>(() => Change.Batch(source, new double[10], 0));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
@@ -18,7 +18,7 @@ public class ChangeValidationTests
|
||||
var series = bars.Close;
|
||||
int period = 10;
|
||||
|
||||
var result = Change.Calculate(series, period);
|
||||
var result = Change.Batch(series, period);
|
||||
|
||||
for (int i = period; i < series.Count; i++)
|
||||
{
|
||||
@@ -63,7 +63,7 @@ public class ChangeValidationTests
|
||||
var output = new double[values.Length];
|
||||
int period = 10;
|
||||
|
||||
Change.Calculate(values, output, period);
|
||||
Change.Batch(values, output, period);
|
||||
|
||||
for (int i = period; i < values.Length; i++)
|
||||
{
|
||||
@@ -83,7 +83,7 @@ public class ChangeValidationTests
|
||||
int period = 10;
|
||||
|
||||
// Calculate QuanTAlib Change
|
||||
var qResult = Change.Calculate(source, period);
|
||||
var qResult = Change.Batch(source, period);
|
||||
|
||||
// Calculate Tulip ROC (returns percentage)
|
||||
var rocIndicator = Tulip.Indicators.roc;
|
||||
@@ -171,7 +171,7 @@ public class ChangeValidationTests
|
||||
var source = bars.Close;
|
||||
|
||||
// Batch
|
||||
var batchResult = Change.Calculate(source, period);
|
||||
var batchResult = Change.Batch(source, period);
|
||||
|
||||
// Streaming
|
||||
var streamingIndicator = new Change(period);
|
||||
@@ -185,7 +185,7 @@ public class ChangeValidationTests
|
||||
// Span
|
||||
var values = source.Values.ToArray();
|
||||
var spanOutput = new double[count];
|
||||
Change.Calculate(values, spanOutput, period);
|
||||
Change.Batch(values, spanOutput, period);
|
||||
|
||||
// Event-driven
|
||||
var eventIndicator = new Change(period);
|
||||
@@ -215,7 +215,7 @@ public class ChangeValidationTests
|
||||
|
||||
foreach (int period in new[] { 1, 5, 10, 20 })
|
||||
{
|
||||
var result = Change.Calculate(source, period);
|
||||
var result = Change.Batch(source, period);
|
||||
|
||||
// Calculate Tulip ROC
|
||||
var rocIndicator = Tulip.Indicators.roc;
|
||||
|
||||
@@ -28,7 +28,7 @@ public sealed class Change : AbstractBase
|
||||
public override bool IsHot => _buffer.Count > _period;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// Initializes a new Change indicator with the specified lookback period.
|
||||
/// </summary>
|
||||
/// <param name="period">Lookback period (must be >= 1)</param>
|
||||
public Change(int period = 1)
|
||||
@@ -45,7 +45,7 @@ public sealed class Change : AbstractBase
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// Initializes a new Change indicator chained to a source publisher.
|
||||
/// </summary>
|
||||
/// <param name="source">Source indicator for chaining</param>
|
||||
/// <param name="period">Lookback period</param>
|
||||
@@ -116,7 +116,7 @@ public sealed class Change : AbstractBase
|
||||
}
|
||||
}
|
||||
|
||||
public static TSeries Calculate(TSeries source, int period = 1)
|
||||
public static TSeries Batch(TSeries source, int period = 1)
|
||||
{
|
||||
var indicator = new Change(period);
|
||||
return indicator.Update(source);
|
||||
@@ -125,7 +125,7 @@ public sealed class Change : AbstractBase
|
||||
/// <summary>
|
||||
/// Calculates relative change over a span of values.
|
||||
/// </summary>
|
||||
public static void Calculate(ReadOnlySpan<double> source, Span<double> output, int period = 1)
|
||||
public static void Batch(ReadOnlySpan<double> source, Span<double> output, int period = 1)
|
||||
{
|
||||
if (source.Length == 0)
|
||||
{
|
||||
@@ -204,6 +204,13 @@ public sealed class Change : AbstractBase
|
||||
}
|
||||
}
|
||||
|
||||
public static (TSeries Results, Change Indicator) Calculate(TSeries source, int period = 1)
|
||||
{
|
||||
var indicator = new Change(period);
|
||||
TSeries results = indicator.Update(source);
|
||||
return (results, indicator);
|
||||
}
|
||||
|
||||
public override void Reset()
|
||||
{
|
||||
_buffer.Clear();
|
||||
@@ -211,4 +218,4 @@ public sealed class Change : AbstractBase
|
||||
_p_state = default;
|
||||
Last = default;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user