( https://silo.tips/download/hilbert-indi ... n-to-trade )
Смысл в следующем.
Если есть EMA с некоторым периодом, то она отстает от входного ряда. Если взять EMA с удвоенным периодом, то запаздывание станет в два раза больше. Теперь, если из быстрой вычесть медленную, то получим величину этого запаздывания; прибавим же эту величину к быстрой - и получим EMA примерно без запаздывания.
Вот что выходит:
Код: Выделить всё
function Initialize()
{
IndicatorName = "EEMA";
PriceStudy = true;
AddInput("Input", Inputs.Price);
AddParameter("Period", 10);
AddSeries("EEMA", DrawAs.Line, Color.Black);
}
function Evaluate()
{
double f=EMA(Input, (int)Period)[0];
double s=EMA(Input, 2*(int)Period);
EEMA[0]=2*f-s;
}
На рисунке пример обычной EMA (оранжевый) и скомпенсированной EEMA с одним и тем же периодом (50).
Видно, что скомпенсированный фильтр быстрее следует за входным рядом. (В каких-то случаях это полезно, в каких-то, наоборот, вредно.)
Наверное, в таком же духе можно экспериментировать и с другими бегущими средними.
Не бог весть что, но м.б. кому-то пригодится.