Функция CopyBuffer(). Косяк в документации?

 

Я функцией CopyBuffer() пользуюсь периодически. но раньше я как-то на автомате всё писал, а сегодня продолбался минут 25. Не важно какую перегрузку выбрать, всё-равно есть косяк. Например, возьмём этот вариант:

int  CopyBuffer( 
   int       indicator_handle,     // handle индикатора 
   int       buffer_num,           // номер буфера индикатора 
   int       start_pos,            // откуда начнем  
   int       count,                // сколько копируем 
   double    buffer[]              // массив, куда будут скопированы данные 
   );

Чётко чёрным (серым) по белому написано, что это номер буфера. Ну.. есс-но я вот в последний раз так и написал. Указал в каждом месте использования этой функции номер буфера, соответственно, хэндл индикатора который связаны с этим буфером и сам буфер.  Далее продолбался, как я уже написал, минут 25 и понял, что что-то не то.

Открыл стандартный индикатор МАКД. Вижу..

//--- get Fast EMA buffer
   if(IsStopped()) return(0); //Checking for stop flag
   if(CopyBuffer(ExtFastMaHandle,0,0,to_copy,ExtFastMaBuffer)<=0)    // Номер буфера быстрой машки типа = 0
     {
      Print("Getting fast EMA is failed! Error",GetLastError());
      return(0);
     }
//--- get SlowSMA buffer
   if(IsStopped()) return(0); //Checking for stop flag
   if(CopyBuffer(ExtSlowMaHandle,0,0,to_copy,ExtSlowMaBuffer)<=0)    // Номер буфера медленной машки типа = 0
     {
      Print("Getting slow SMA is failed! Error",GetLastError());
      return(0);
     }

Так это же не верно. Буферы у них разные. Это баг, который тянется с самого начала основания 5-ки или как это понимать? Мне реально интересно, как это можно обосновать..

 
Используются ведь хенды разные: ExtFastMaHandle и ExtSlowMaHandle.
А что в каждом из вариантов содержится в первом буфере (номер 0) зависит от непосредственной реализации и параметров индикатора.