Skip to content

Commit

Permalink
Fix disabled subsampling (#7656)
Browse files Browse the repository at this point in the history
- Fix disable subsampling which was adjusting series point times,
  updating unit tests to reproduce issue
  • Loading branch information
Martin-Molinero authored Jan 2, 2024
1 parent 65f8590 commit aaab65f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
10 changes: 10 additions & 0 deletions Common/SeriesSampler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,16 @@ public SeriesSampler(TimeSpan resolution)
/// <returns>The sampled series</returns>
public virtual BaseSeries Sample(BaseSeries series, DateTime start, DateTime stop, bool truncateValues = false)
{
if (!SubSample && series.Values.Count > 1)
{
var dataDiff = series.Values[1].Time - series.Values[0].Time;
if (dataDiff >= Step)
{
// we don't want to subsample this case, directly return what we are given as long as is within the range
return GetIdentitySeries(series.Clone(empty: true), series, start, stop, truncateValues: false);
}
}

if (series is Series seriesToSample)
{
return SampleSeries(seriesToSample, start, stop, truncateValues);
Expand Down
6 changes: 4 additions & 2 deletions Tests/Common/SeriesSamplerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,8 @@ public void SubSamplesDisabled()
series.AddPoint(_reference, 1m);
series.AddPoint(_reference.AddDays(1), 2m);
series.AddPoint(new ChartPoint(_reference.AddDays(2), null));
series.AddPoint(_reference.AddDays(3), 4m);
// even if the data doesn't fit exactly the expected bar span we expect it to pass through
series.AddPoint(_reference.AddDays(2.8), 4m);
series.AddPoint(_reference.AddDays(4), 5m);
series.AddPoint(_reference.AddDays(5), 6m);

Expand Down Expand Up @@ -791,7 +792,8 @@ public void SamplesCandlestickSeriesWithHigherSamplingResolutionDisabled()
var series = new CandlestickSeries { Name = "name" };
series.AddPoint(_reference, 1m, 2m, 1m, 2m);
series.AddPoint(_reference.AddDays(1), 2m, 3m, 2m, 3m);
series.AddPoint(_reference.AddDays(2), 4m, 4m, 3m, 3m);
// even if the data doesn't fit exactly the expected bar span we expect it to pass through
series.AddPoint(_reference.AddDays(1.6), 4m, 4m, 3m, 3m);

var sampler = new SeriesSampler(TimeSpan.FromDays(0.25)) { SubSample = false };

Expand Down

0 comments on commit aaab65f

Please sign in to comment.