double CheckCrossMADist(string smb, int tf, int iB, double dist)
{
double dMA=iMA(smb, tf, fPeriod, 0, fMode, fPrice, iB)-iMA(smb, tf, sPeriod, 0, sMode, sPrice, iB);
if (MathAbs(dMA)<dist*Point) return(0); // если разница меньше порога, то пересечения нет
int n=iBars(smb, tf)-MathMax(sPeriod, fPeriod)-1; // число баров для проверки (c учетом корректности расчета МА)
for(int i=iB+1; i<n; i++) // проходим по барам
{
double dMA2=iMA(smb, tf, fPeriod, 0, fMode, fPrice, i)-iMA(smb, tf, sPeriod, 0, sMode, sPrice, i);
if(MathAbs(dMA2)>=dist*Point) break; // если нашли расстояние больше порога, то обрываем поиск
}
if (dMA*dMA2>0) return(0); // проверяем знак разниц. если одинаковый, то пересечение не найдено
return(dMA); // вернули знак пересечения
}