Передача переменных библиотечной функции.

 
Почемуто значение переменной, передаваемой библиотечной функции по ссылке, не изменяется. Но если просто взять и скопировать код функции в тело индикатора, то значение переменной нормально меняется.
Массивы передаваемые по ссылке библиотечной функции нормально изменяются.

Например:
в индикаторе
#import "exampl.ex4"
   int max(double & arr[], double & m);



в exmapl.mq4

int max(double & arr[], double & m)
{
   int n = ArraySize(arr);
   int num=0;
   m = arr[0];
   for (int i=0; i<n; i++)
   {
      if (arr[i] > m)
      {
         m = arr[i];
         num = i;
      }
   }
   return(num);
}



и в индикаторе сделать вызов

double a[5] = {5.5,2.05,65,2,-22.3};
double mm=0;
int k=0;
k=max(a, mm);



то в переменной mm так и останется 0. Но если закинуть эту функцию прямо в индикатор то всё нормально считается и изменяется. Может я что-нибудь делаю неправильно?

 
по ссылке изменяются только переменные, переданные в "свою" функцию, то есть функцию, определённую в том же модуле (или включённую на этапе компиляции). если Вы хотите получать изменённые значения, то используйте для этого массив, хотя бы из одного элемента, который передавайте по ссылке. таково ограничение реализации
Причина обращения: