Точки перегиба.

(по материалам сообщений DIMITRIS TSOKAKIS в группе пользователей AmiBroker на Yahoo)

Если рассмотреть обычную синусоиду



То легко можно выделить 4 фазы: Можно использовать это свойство и при сглаживании рыночных цен. Для этого необходимо применить фильтр, дающий линию максимально похожую на синусоиду. В файле помощи AmiBroker есть пример фильтра IIR2 (infinite impulse response) – фильтра с бесконечной импульсной характеристикой.
k=Param("k", 0.3, 0.1, 0.7, 0.1);
function IIR2( input, f0, f1, f2 )
{
  IR[ 0 ] = input[ 0 ];
  IR[ 1 ] = input[ 1 ];
  for( i = 2; i < BarCount; i++ )
  {
   IR[ i ] = f0 * input[ i ] + f1 * IR[ i - 1 ] + f2 * IR[ i - 2 ];
  }
  return IR;
}



Конечно, эта функция тоже не дает идеальную синусоиду, но получается достаточно гладкая кривая, на которой можно обнаружить эти 4 фазы. Это дает нам возможность заранее предсказывать окончание роста/падения.
k=Param("k", 0.3, 0.1, 0.7, 0.1);

// Фильтр с бесконечной импульсной характеристикой
function IIR2( input, f0, f1, f2 )
{
  IR[ 0 ] = input[ 0 ];
  IR[ 1 ] = input[ 1 ];
  for( i = 2; i < BarCount; i++ )
  {
   IR[ i ] = f0 * input[ i ] + f1 * IR[ i - 1 ] + f2 * IR[ i - 2 ];
  }
  return IR;
}

y=IIR2( Close, 0.3, 1.2+K, -0.5-K);

// B. Convexity definition
Convex = (y - Ref(y, -1)) >= (y-Ref(y, -2))/2;
Concave = NOT(Convex);
Up = y>=Ref(y, -1);
Down= NOT(Up);

// Trend phases
Bullstart = Convex AND Up; // from A to B
Bullend = Concave AND Up; // from B to C
Bearstart = Concave AND Down; // from C to D
Bearend = Convex AND Down; // from D to E

Color = IIf(Bullstart, colorGreen, IIf(Bullend, colorBlue, IIf(Bearstart, colorRed, colorYellow)));

Plot(y,"IIR", color, styleThick|styleDots);
Plot(C, "C", colorBlack, styleCandle);



Таким образом, теперь можно заранее подготовится к выходу из тренда или даже закончить торговлю при первых признаках его окончания.