функция return?

 
Поясните пожалуйста, что выполняет функция return в этом примере:

Пример из справки

int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- проверка на возможные ошибки
if(counted_bars<0) return(-1);
...


И что значит в блоке start:
return;
return(0);
return(-1) ?
 
если в общем , то возвращает результат выполнения функции, обычно -1 означает ненормальное завершение функции, а в принципе можно самому каждому возвращаемому значению придавать логику, а если конкретно в каком-то коде, то в соответствии с логикой алгоритма кода
 
Поясните пожалуйста, что выполняет функция return в этом примере

конкретно здесь return значит, что если counted_bars меньше 0 (возникла какая-то ошибка) то индикатор прекращает выполнение
 
То есть, при поступлении нового тика функция start не выполняется, или индикатор выгружается полностью?
 
Мне просто не понятно почему в этом примере используется return(-1), а не return(0). В чем конкретно здесь логика? Просто хочу разобраться, а не тупо копировать.

int IndicatorCounted( ) 
Функция возвращает количество баров, не измененных после последнего вызова индикатора. Большинство подсчитанных баров не нуждается в пересчете. Функция используется для оптимизации вычислений. 
Пример

  int start()
    {
     int limit;
     int counted_bars=IndicatorCounted();
     if(counted_bars<0) return(-1);

     if(counted_bars>0) counted_bars--;
     limit=Bars-counted_bars;
     for(int i=0; i<limit; i++)
       {
        ExtBlueBuffer[i]=iMA(NULL,0,JawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
        ExtRedBuffer[i]=iMA(NULL,0,TeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
        ExtLimeBuffer[i]=iMA(NULL,0,LipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
       }
  //----
     return(0);
    }
 
То есть, при поступлении нового тика функция start не выполняется, или индикатор выгружается полностью?

только старт не выполняется

Мне просто не понятно почему в этом примере используется return(-1), а не return(0). В чем конкретно здесь логика? Просто хочу разобраться, а не тупо копировать.

тут абсолютно всё равно -1 или 0. Значение в скобочках ретурна играет роль только если присваивать какой-либо переменной результат ф-ции. Т.е. если бы эту ф-цию (start()) использовать так:
 int my_value = start();

то значение в скобочках ретурна будет присвоено переменной my_value.
Иначе - это просто выход. Хоть return(0) хоть return(2301927) =)

 
Насколько я помню, выход из start() со значением меньше нуля дает команду индикатору на перезапуск(переинициализацию).
 
Насколько я помню, выход из start() со значением меньше нуля дает команду индикатору на перезапуск(переинициализацию).

нет. ничего не значит. хотя идея неплоха
 
Насколько я помню, выход из start() со значением меньше нуля дает команду индикатору на перезапуск(переинициализацию).

нет. ничего не значит. хотя идея неплоха


Странно, откуда же у меня такая уверенность. Я был уверен, что прочитал это в ответах разработчиков на этом форуме... Дежавю какое-то ... 8(
Я везде в индикаторах это втыкаю, но не разу не проверял. Типа, Земля плоская у меня ...
 
Насколько я помню, выход из start() со значением меньше нуля дает команду индикатору на перезапуск(переинициализацию).

нет. ничего не значит. хотя идея неплоха


Чем это будет отличатся от явного и, следовательно, более очевидного

    if (err != ERR_NO_ERROR)
        return (init());



?

 
Я везде в индикаторах это втыкаю, но не разу не проверял

Именно поэтому у меня и возник такой вопрос.
Просматривая различные индикаторы, частенько встречается ретурн с этим параметром.
А как оказалось, (проверил все таки), разницы никакой нет (в данном примере).

И все же, интересно, какую логику в этом уловил многоуважаемый Profi_r? :))) (без обид)
Причина обращения: