diff --git a/lib/core/tbarseries/tbarseries.cs b/lib/core/tbarseries/tbarseries.cs index a54f5b02..64e6443a 100644 --- a/lib/core/tbarseries/tbarseries.cs +++ b/lib/core/tbarseries/tbarseries.cs @@ -11,12 +11,12 @@ namespace QuanTAlib; /// public class TBarSeries : IReadOnlyList { - protected readonly List _t = new(); - protected readonly List _o = new(); - protected readonly List _h = new(); - protected readonly List _l = new(); - protected readonly List _c = new(); - protected readonly List _v = new(); + protected readonly List _t; + protected readonly List _o; + protected readonly List _h; + protected readonly List _l; + protected readonly List _c; + protected readonly List _v; public string Name { get; set; } = "Bar"; public event Action? Pub; @@ -34,13 +34,8 @@ public class TBarSeries : IReadOnlyList public TSeries C => Close; public TSeries V => Volume; - public TBarSeries() + public TBarSeries() : this(0) { - Open = new TSeries(_t, _o) { Name = "Open" }; - High = new TSeries(_t, _h) { Name = "High" }; - Low = new TSeries(_t, _l) { Name = "Low" }; - Close = new TSeries(_t, _c) { Name = "Close" }; - Volume = new TSeries(_t, _v) { Name = "Volume" }; } public TBarSeries(int capacity) diff --git a/lib/core/tseries/tseries.cs b/lib/core/tseries/tseries.cs index 582e8ec1..31ad437a 100644 --- a/lib/core/tseries/tseries.cs +++ b/lib/core/tseries/tseries.cs @@ -20,10 +20,8 @@ namespace QuanTAlib; public event Action? Pub; - public TSeries() + public TSeries() : this(0) { - _t = new List(); - _v = new List(); } public TSeries(int capacity) diff --git a/lib/trends/dema/Dema.cs b/lib/trends/dema/Dema.cs index d898720e..c93752e2 100644 --- a/lib/trends/dema/Dema.cs +++ b/lib/trends/dema/Dema.cs @@ -120,7 +120,7 @@ public sealed class Dema : ITValuePublisher public TSeries Update(TSeries source) { - if (source.Count == 0) return new TSeries(new List(), new List()); + if (source.Count == 0) return new TSeries(); int len = source.Count; var t = new List(len); diff --git a/lib/trends/ema/Ema.cs b/lib/trends/ema/Ema.cs index af98805f..6930ee9a 100644 --- a/lib/trends/ema/Ema.cs +++ b/lib/trends/ema/Ema.cs @@ -149,7 +149,7 @@ public sealed class Ema : ITValuePublisher public TSeries Update(TSeries source) { - if (source.Count == 0) return new TSeries(new List(), new List()); + if (source.Count == 0) return new TSeries(); int len = source.Count; var t = new List(len); @@ -291,7 +291,7 @@ public sealed class Ema : ITValuePublisher if (source.Length == 0) return; - State state = State.New(); + var state = State.New(); double lastValid = 0; CalculateCore(source, output, alpha, ref state, ref lastValid); diff --git a/lib/trends/sma/Sma.cs b/lib/trends/sma/Sma.cs index 09eeaa27..37fa23ae 100644 --- a/lib/trends/sma/Sma.cs +++ b/lib/trends/sma/Sma.cs @@ -137,7 +137,7 @@ public sealed class Sma : ITValuePublisher public TSeries Update(TSeries source) { - if (source.Count == 0) return new TSeries(new List(), new List()); + if (source.Count == 0) return new TSeries(); int len = source.Count; var t = new List(len); diff --git a/lib/trends/tema/Tema.cs b/lib/trends/tema/Tema.cs index 6b7374f5..28f51a0c 100644 --- a/lib/trends/tema/Tema.cs +++ b/lib/trends/tema/Tema.cs @@ -129,7 +129,7 @@ public sealed class Tema : ITValuePublisher public TSeries Update(TSeries source) { - if (source.Count == 0) return new TSeries(new List(), new List()); + if (source.Count == 0) return new TSeries(); int len = source.Count; var t = new List(len); diff --git a/lib/trends/trima/Trima.cs b/lib/trends/trima/Trima.cs index ab6854a4..0c2d0b12 100644 --- a/lib/trends/trima/Trima.cs +++ b/lib/trends/trima/Trima.cs @@ -141,7 +141,7 @@ public sealed class Trima : ITValuePublisher public TSeries Update(TSeries source) { - if (source.Count == 0) return new TSeries(new List(), new List()); + if (source.Count == 0) return new TSeries(); int len = source.Count; var t = new List(len); diff --git a/lib/trends/wma/Wma.cs b/lib/trends/wma/Wma.cs index cfae3607..5b8eedd8 100644 --- a/lib/trends/wma/Wma.cs +++ b/lib/trends/wma/Wma.cs @@ -141,7 +141,7 @@ public sealed class Wma : ITValuePublisher public TSeries Update(TSeries source) { - if (source.Count == 0) return new TSeries(new List(), new List()); + if (source.Count == 0) return new TSeries(); int len = source.Count; var t = new List(len); diff --git a/perf/Benchmark.cs b/perf/Benchmark.cs index 0a1a00cc..450b6b21 100644 --- a/perf/Benchmark.cs +++ b/perf/Benchmark.cs @@ -176,15 +176,7 @@ public class IndicatorBenchmarks [BenchmarkCategory("SMA")] [Benchmark(Description = "Skender SMA")] - public double Skender_Sma() - { - double sum = 0; - foreach (var r in _quotes.GetSma(Period)) - { - sum += (double)(r.Sma ?? 0); - } - return sum; - } + public object Skender_Sma() => _quotes.GetSma(Period); // ==================== EMA ==================== [BenchmarkCategory("EMA")] @@ -229,15 +221,7 @@ public class IndicatorBenchmarks [BenchmarkCategory("EMA")] [Benchmark(Description = "Skender EMA")] - public double Skender_Ema() - { - double sum = 0; - foreach (var r in _quotes.GetEma(Period)) - { - sum += (double)(r.Ema ?? 0); - } - return sum; - } + public object Skender_Ema() => _quotes.GetEma(Period); // ==================== WMA ==================== [BenchmarkCategory("WMA")] @@ -282,15 +266,7 @@ public class IndicatorBenchmarks [BenchmarkCategory("WMA")] [Benchmark(Description = "Skender WMA")] - public double Skender_Wma() - { - double sum = 0; - foreach (var r in _quotes.GetWma(Period)) - { - sum += (double)(r.Wma ?? 0); - } - return sum; - } + public object Skender_Wma() => _quotes.GetWma(Period); // ==================== TRIMA ==================== [BenchmarkCategory("TRIMA")] @@ -376,15 +352,7 @@ public class IndicatorBenchmarks [BenchmarkCategory("DEMA")] [Benchmark(Description = "Skender DEMA")] - public double Skender_Dema() - { - double sum = 0; - foreach (var r in _quotes.GetDema(Period)) - { - sum += (double)(r.Dema ?? 0); - } - return sum; - } + public object Skender_Dema() => _quotes.GetDema(Period); // ==================== TEMA ==================== [BenchmarkCategory("TEMA")] @@ -429,13 +397,5 @@ public class IndicatorBenchmarks [BenchmarkCategory("TEMA")] [Benchmark(Description = "Skender TEMA")] - public double Skender_Tema() - { - double sum = 0; - foreach (var r in _quotes.GetTema(Period)) - { - sum += (double)(r.Tema ?? 0); - } - return sum; - } + public object Skender_Tema() => _quotes.GetTema(Period); }