validation and profiles

This commit is contained in:
Miha Kralj
2026-02-26 22:02:52 -08:00
parent 9ab37c1200
commit 8a1ba95173
317 changed files with 18704 additions and 622 deletions
@@ -1,3 +1,5 @@
using OoplesFinance.StockIndicators;
using OoplesFinance.StockIndicators.Models;
using Skender.Stock.Indicators;
using QuanTAlib.Tests;
@@ -166,4 +168,20 @@ public sealed class VortexValidationTests : IDisposable
Assert.Equal(results1Minus[i], results2Minus[i], 1e-10);
}
}
[Fact]
public void Vortex_MatchesOoples_Structural()
{
// CalculateVortexIndicator — structural test; outputs stored in OutputValues (ViPlus/ViMinus)
var ooplesData = _data.SkenderQuotes
.Select(q => new TickerData { Date = q.Date, Open = (double)q.Open, High = (double)q.High, Low = (double)q.Low, Close = (double)q.Close, Volume = (double)q.Volume })
.ToList();
var result = new StockData(ooplesData).CalculateVortexIndicator();
// Ooples multi-output indicators store results in OutputValues, not CustomValuesList
var allValues = result.OutputValues.Values.SelectMany(v => v).ToList();
int finiteCount = allValues.Count(v => double.IsFinite(v));
Assert.True(finiteCount > 100, $"Expected >100 finite Ooples Vortex values, got {finiteCount}");
}
}