Просьба помочь разобраться в формуле!!!

 
В просторах сети нашел довольно любопытный индикатор Сool. Прекрасно работает на большинстве пар, но на парах с "большими" ценами (Йеновые пары, NOK, SEK, и пр.) работает не корректно.
Буду очень признателен если кто-нибудь поможет разобраться если не в формуле, то хотя бы в сути этого индикатора. Описания его у меня нет, поэтому и возникли такие трудности.



//+------------------------------------------------------------------+
//| Cool.mq4
//| Ramdass - Conversion only
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 DarkBlue


extern int ndot=5;
extern int CountBars=3000;
//---- buffers
double cfl[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
IndicatorBuffers(1);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,cfl);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Cool |
//+------------------------------------------------------------------+
int start()
{



if (CountBars>=Bars) CountBars=Bars;
SetIndexDrawBegin(0,Bars-CountBars+ndot+1);
int i,shift,cnt,ndot1,counted_bars=IndicatorCounted();
double TYVar,ZYVar,TIndicatorVar,ZIndicatorVar,M,N,AY,AIndicator;
//----
if(Bars<=ndot) return(0);

//----
shift=CountBars-ndot-1;


while(shift>=0)
{

TYVar=0;
ZYVar=0;
N=0;
M=0;
TIndicatorVar=0;
ZIndicatorVar=0;
ndot1=ndot;
if (shift+1<ndot1) ndot1=shift+1;
for (cnt=ndot; cnt>=1; cnt--) // n=5 - по пяти точкам
{
N=N+cnt*cnt; //равно 55
M=M+cnt; //равно 15
}
for (cnt=ndot1; cnt>=1; cnt--) // n=5 - по пяти точкам
{
ZYVar=ZYVar+(High[shift-cnt+1]+Low[shift-cnt+1])/2*(ndot+1-cnt);
TYVar=TYVar+(High[shift-cnt+1]+Low[shift-cnt+1])/2;
ZIndicatorVar=ZIndicatorVar+iMA(NULL,0,5,3,MODE_SMMA,PRICE_MEDIAN,shift-cnt+1)*(ndot+1-cnt);
TIndicatorVar=TIndicatorVar+iMA(NULL,0,5,3,MODE_SMMA,PRICE_MEDIAN,shift-cnt+1);
}
AY=(TYVar+(N-2*ZYVar)*ndot/M)/M;
AIndicator=(TIndicatorVar+(N-2*ZIndicatorVar)*ndot/M)/M;
cfl[shift]=Close[shift]+((-1000)*MathLog(AY/AIndicator)/500);



shift--;
}
return(0);
}
//+------------------------------------------------------------------+
 
Формула простая, была попытка использования метода наименьших квадратов для оценки ускорения цены на последних 5 барах по ценам Typical(Hi+Lo делить на два) по сравнению с ускорением зеленой линии Аллигатора. В процессе преобразования было внесено две ошибки, одна методологическая, вторая - потеря некоторых членов уравнения.
Исправление первой ошибки немного ухудшило Граальность, исправление второй - убило Граальность напрочь :) (точнее ухудшило наглядность)

Правда, народ начинает делать новые версии и привносит уже свои ошибки из-за непонимания математики в коде
Причина обращения: