feat: add new indicators (Decay, Edecay, MinusDi, MinusDm, PlusDi, PlusDm, Maxindex, Minindex, Sarext) and update pine scripts, core libs, validation tests, and python bindings

This commit is contained in:
Miha Kralj
2026-03-09 13:45:46 -07:00
parent 8e43d62cbb
commit 031f1b5fe6
491 changed files with 6156 additions and 5590 deletions
+9 -9
View File
@@ -114,10 +114,10 @@ public sealed class Bilateral : AbstractBase
{
double val = GetValidValue(source[i]);
double removed = _buffer.Add(val);
_state.SumSq += (val * val);
_state.SumSq = Math.FusedMultiplyAdd(val, val, _state.SumSq);
if (_buffer.IsFull)
{
_state.SumSq -= (removed * removed);
_state.SumSq = Math.FusedMultiplyAdd(-removed, removed, _state.SumSq);
}
}
@@ -187,10 +187,10 @@ public sealed class Bilateral : AbstractBase
double val = GetValidValue(input.Value);
double removed = _buffer.Add(val);
_state.SumSq += (val * val);
_state.SumSq = Math.FusedMultiplyAdd(val, val, _state.SumSq);
if (_buffer.IsFull)
{
_state.SumSq -= (removed * removed);
_state.SumSq = Math.FusedMultiplyAdd(-removed, removed, _state.SumSq);
}
}
else
@@ -207,15 +207,15 @@ public sealed class Bilateral : AbstractBase
if (_buffer.Count == 0)
{
_buffer.Add(val);
_state.SumSq += (val * val);
_state.SumSq = Math.FusedMultiplyAdd(val, val, _state.SumSq);
}
else
{
double oldNewest = _buffer.Newest; // Get current newest before overwriting
_buffer.UpdateNewest(val);
_state.SumSq -= (oldNewest * oldNewest);
_state.SumSq += (val * val);
_state.SumSq = Math.FusedMultiplyAdd(-oldNewest, oldNewest, _state.SumSq);
_state.SumSq = Math.FusedMultiplyAdd(val, val, _state.SumSq);
}
}
@@ -421,12 +421,12 @@ public sealed class Bilateral : AbstractBase
{
removed = window[windowIdx];
sum -= removed;
sumSq -= removed * removed;
sumSq = Math.FusedMultiplyAdd(-removed, removed, sumSq);
}
window[windowIdx] = val;
sum += val;
sumSq += val * val;
sumSq = Math.FusedMultiplyAdd(val, val, sumSq);
int currentNewestIdx = windowIdx;
windowIdx = (windowIdx + 1) % period;
+1 -1
View File
@@ -1,4 +1,4 @@
// The MIT License (MIT)
// Licensed under the Apache License, Version 2.0
// © mihakralj
//@version=6
indicator("Bilateral Filter (BILATERAL)", "BILATERAL", overlay=true)