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
+10 -10
View File
@@ -201,8 +201,8 @@ public sealed class Skew : AbstractBase
{
double val = span[i];
sum += val;
sumSq += val * val;
sumCu += val * val * val;
sumSq = Math.FusedMultiplyAdd(val, val, sumSq);
sumCu = Math.FusedMultiplyAdd(val * val, val, sumCu);
}
_sum = sum;
_sumSq = sumSq;
@@ -312,8 +312,8 @@ public sealed class Skew : AbstractBase
}
sum = sum - oldVal + val;
sumSq = sumSq - (oldVal * oldVal) + (val * val);
sumCu = sumCu - (oldVal * oldVal * oldVal) + (val * val * val);
sumSq = sumSq - oldVal * oldVal + val * val;
sumCu = sumCu - oldVal * oldVal * oldVal + val * val * val;
output[i] = CalculateSkewFromSums(sum, sumSq, sumCu, period, isPopulation);
@@ -334,8 +334,8 @@ public sealed class Skew : AbstractBase
}
recalcSum += v;
recalcSumSq += v * v;
recalcSumCu += v * v * v;
recalcSumSq = Math.FusedMultiplyAdd(v, v, recalcSumSq);
recalcSumCu = Math.FusedMultiplyAdd(v * v, v, recalcSumCu);
}
sum = recalcSum;
sumSq = recalcSumSq;
@@ -533,8 +533,8 @@ public sealed class Skew : AbstractBase
{
double v = Unsafe.Add(ref srcRef, startIdx + k);
recalcSum += v;
recalcSumSq += v * v;
recalcSumCu += v * v * v;
recalcSumSq = Math.FusedMultiplyAdd(v, v, recalcSumSq);
recalcSumCu = Math.FusedMultiplyAdd(v * v, v, recalcSumCu);
}
sum = recalcSum;
sumSq = recalcSumSq;
@@ -548,8 +548,8 @@ public sealed class Skew : AbstractBase
double oldVal = Unsafe.Add(ref srcRef, i - period);
sum = sum - oldVal + val;
sumSq = sumSq - (oldVal * oldVal) + (val * val);
sumCu = sumCu - (oldVal * oldVal * oldVal) + (val * val * val);
sumSq = Math.FusedMultiplyAdd(val, val, Math.FusedMultiplyAdd(-oldVal, oldVal, sumSq));
sumCu = Math.FusedMultiplyAdd(val * val, val, Math.FusedMultiplyAdd(-(oldVal * oldVal), oldVal, sumCu));
Unsafe.Add(ref outRef, i) = CalculateSkewFromSums(sum, sumSq, sumCu, n, isPopulation);
}
+1 -1
View File
@@ -1,4 +1,4 @@
// The MIT License (MIT)
// Licensed under the Apache License, Version 2.0
// © mihakralj
//@version=6
indicator("Skewness (SKEW)", "SKEW", overlay=false, precision=6)