Девелоперам: Похоже на баг

 

Попробуйте запустить в индикаторе вызов пробной функции Proba(intPeriod)

У меня получается так:

res1=9 , если запускаем на М1 (или 7, если текущий ТФ М15, вобщем понятно)

res2=0 , всегда равен нулю!! хотя должны быть одинаковы, на мой взгляд.

Обратите внимание, в "switch" нет брейков, так надо в моем индикаторе, здесь же я привел пробную функцию специально для вопроса.


Если убираем инициализацию dblResult (красный =0.0), то идет синхронное накопление, т.е. при каждом входе в функцию Proba переменная dblResult ведет себя как статическая, хотя она не объявлена таковой.

Просьба рассмотреть данный случай.


Proba(_Period);

..........

void Proba(int intTF) {

    double dblResult=0.0;

    switch(intTF) {
        case PERIOD_M1:   dblResult+=1;
        case PERIOD_M5:   dblResult+=1;
        case PERIOD_M15:  dblResult+=1;
        case PERIOD_M30:  dblResult+=1;
        case PERIOD_H1:   dblResult+=1;
        case PERIOD_H4:   dblResult+=1;
        case PERIOD_D1:   dblResult+=1;
        case PERIOD_W1:   dblResult+=1;
        case PERIOD_MN1:  dblResult+=1;
       
        Print("res1=" + dblResult);   
    }
    Print("res2=" + dblResult);   
}
 

Спасибо за сообщение.

Будем разбираться.

 

Спасибо за сообщение! Ошибка исправлена. Ждите обновления.

Для её обхода в текущем билде поставьте break в последнем case


 
Спасибо, я уже так и сделал - выяснил это путем подбора :)

Причина обращения: