Пример:
При V-образных формациях движения цены индикатор TMA будет иметь наименьшую потерю амплитуды среди классических индикаторов (т.е. экстремумы цены и индикатора будут наиболее близки по вертикали).
Сравнение:
Исходный текст:
Код: Выделить всё
function Initialize()
{
IndicatorName = "TMA";
PriceStudy = true;
AddInput("Input", Inputs.Price);
AddSeries("TMA", DrawAs.Line, Color.Red);
AddParameter("Period", 10);
}
function Evaluate()
{
// AlfaDirect. 2014. OX
// TMA (Triangular MA) – МА с треугольным фильтром
// Задается полупериод индикатора - всегда четный вариант расчета
// Пример весовой функции: Период = 3, W = [1 2 3 3 2 1]
if (CurrentIndex < 2*Period)
TMA = Input[0];
else
{
var sum = 0.0;
var sumZ = 0.0;
for ( var i = 1; i <= Period; i++ )
{
sum = sum + (Input[-2*Period + i] + Input[-i+1]) * i;
sumZ = sumZ + i + i;
}
TMA = sum / sumZ;
}
}
В коде для простоты реализован индикатор, в котором в качестве параметра задается полупериод и рассчитывается четный вид весовой функции.