Скачать MetaTrader 5

функция return?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114268
Forex Trader 2005.10.05 15:58 
Поясните пожалуйста, что выполняет функция return в этом примере:

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

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


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

конкретно здесь return значит, что если counted_bars меньше 0 (возникла какая-то ошибка) то индикатор прекращает выполнение
Forex Trader
114268
Forex Trader 2005.10.05 17:45  
То есть, при поступлении нового тика функция start не выполняется, или индикатор выгружается полностью?
Forex Trader
114268
Forex Trader 2005.10.05 17:46  
Мне просто не понятно почему в этом примере используется 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);
    }
Forex Trader
114268
Forex Trader 2005.10.05 18:28  
То есть, при поступлении нового тика функция start не выполняется, или индикатор выгружается полностью?

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

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

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

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

Forex Trader
114268
Forex Trader 2005.10.05 18:47  
Насколько я помню, выход из start() со значением меньше нуля дает команду индикатору на перезапуск(переинициализацию).
Forex Trader
114268
Forex Trader 2005.10.05 18:48  
Насколько я помню, выход из start() со значением меньше нуля дает команду индикатору на перезапуск(переинициализацию).

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

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


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

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


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

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



?

Forex Trader
114268
Forex Trader 2005.10.05 19:53  
Я везде в индикаторах это втыкаю, но не разу не проверял

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

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