МТ4 - непонятные параметры в OnCalculate(...) - страница 2

 
Slawa:

А общность кода?

Зачем ошибка компиляции? Вы можете писать любую свою функцию с любыми параметрами по правилам MQL4. В том числе такую OnCalculate

И вообще сообщение о неприменимости данного формата OnCalculate выводится в журнал при загрузке индикатора и то при отсутствии "правильной" OnCalculate

Да, сообщение выводится, но в рантайме, что в корне неверно.

Если я пишу отсебятину типа

int OnCalculate(const int rates_total,
                const int prev_calculated)
{
    //---
    // do nothing
    //--- return value of prev_calculated for next call
    return(rates_total);
}

 то получаю варнинг:

OnCalculate function declared with wrong type or/and parameters ScalperPanel.mq4 61 5

0 error(s), 1 warning(s), compile time: 936 msec 1 2

То есть "настолько умный" компилятор понимает, что используется внутренняя функция рантайм среды МТ4 и законно выдает предупреждение о недопустимости подобного набора параметров. Хотя, на мой взгляд, надо выдавать ошибку компиляции.

А вот если я использую вызов функции с параметрами, валидными в МТ5, но не поддерживающимеся в МТ4, то все тип-топ, компилирум без варнингов. 

-----------

Вы же Модератор, должны понимать, что имеют место быть двойные правила компиляции. А двойные правила или исключения из правил означают в программировании одно - правил нет!

----------

P.S. Вы же не будете ностальгировать по временам "старого доброго" MQL4, который вообще пропускал дикие ошибки без errors or warnings, например

int i = 10;
i++; // На подобный мусор старый компилятор вообще не реагировал. Помню потому, что спорил об это с СД. Они утверждали, что ничего страшного тут нет, это исключение.

int start()
{
    return (0);
}
Причина обращения: