как это работает?

 

всем привет! не могу разобраться как это работает.

Вставляю этот код в индикатор на М1 и мало того что он показывает не правильное минимальное значение за заданный промежуток времени, так это значение еще и меняется на каждом баре.

Скорее всего не понимаю логику Ilowest ? обьясните пожалуйста!


P.S. ПОКАЗЫВАЕТ МИНИМАЛЬНОЕ ЗНАЧЕНИЕ ГДЕ-ТО РЯДОМ, НО НЕ ТАМ ГДЕ НАДО )))

   int start=rates_total-1-iBarShift(NULL,0,D'2023.03.02 05:19:00');
   int end=rates_total-1-iBarShift(NULL,0,D'2023.03.02 06:07:00');
   int val_index=iLowest(NULL,0,MODE_LOW,end-start,start);
   Print(time[val_index]," ",low[val_index]);
 
Tango_X:

всем привет! не могу разобраться как это работает.

Вставляю этот код в индикатор на М1 и мало того что он показывает не правильное минимальное значение за заданный промежуток времени, так это значение еще и меняется на каждом баре.

Скорее всего не понимаю логику Ilowest ? обьясните пожалуйста!


P.S. ПОКАЗЫВАЕТ МИНИМАЛЬНОЕ ЗНАЧЕНИЕ ГДЕ-ТО РЯДОМ, НО НЕ ТАМ ГДЕ НАДО )))

Очень странный расчет значений start и end.
 
Tango_X:

всем привет! не могу разобраться как это работает.

Вставляю этот код в индикатор на М1 и мало того что он показывает не правильное минимальное значение за заданный промежуток времени, так это значение еще и меняется на каждом баре.

Скорее всего не понимаю логику Ilowest ? обьясните пожалуйста!


P.S. ПОКАЗЫВАЕТ МИНИМАЛЬНОЕ ЗНАЧЕНИЕ ГДЕ-ТО РЯДОМ, НО НЕ ТАМ ГДЕ НАДО )))

Вот так правильнее:

 int start = iBarShift(NULL,0,D'2023.03.02 05:19:00');
 int end = iBarShift(NULL,0,D'2023.03.02 06:07:00');
 int val_index = iLowest(NULL,0,MODE_LOW, start - end, end);
 Print(time[val_index]," ",low[val_index]);
Нумерация баров идет справа налево по графику. Поэтому индекс бара end в данном примере будет меньше, чем индекс бара start.
 
Ihor Herasko #:

Вот так правильнее:

Нумерация баров идет справа налево по графику. Поэтому индекс бара end в данном примере будет меньше, чем индекс бара start.

спасибо, все получилось, только вот тут немного добавил)

int start = iBarShift(NULL,0,D'2023.03.02 05:19:00');
 int end = iBarShift(NULL,0,D'2023.03.02 06:07:00');
 int val_index = rates_total-1-iLowest(NULL,0,MODE_LOW, start - end, end);
 Print(time[val_index]," ",low[val_index]);
 
Tango_X #:

только вот тут немного добавил)


Для чего?
 
Sergey Gridnev #:

Для чего?

потому что время отображается задом наперед 

 
Tango_X #:

потому что время отображается задом наперед 

Если это MQL5, то можно развернуть массивы-таймсерии при помощи ArraySetAsSeries().

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