Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1081

 
Pokrov:
Добрый день! Подскажите как получить данные на  прошлом баре из массива привязанного через SetIndexBuffer? Спасибо.
massiv[1]
 
Foxonn:
Здравствуйте, можете подсказать, как найти точку Low и точку Hight, допустим с 08:00 утра по 15:00 дня по времени брокера на таймфрейме М5?
iBarShift(), iLowest(), iHighest().
 
evillive:
massiv[1]
А в цикле как быть massiv[i+1] выдает array out of range 

 
Pokrov:
А в цикле как быть massiv[i+1] выдает array out of range 

цикл сюда, так сложно сказать.
 
evillive:
цикл сюда, так сложно сказать.
int i,limit;
   limit=rates_total-prev_calculated;
if(prev_calculated<1) limit=rates_total-1;
for(i=limit; i>0; i--)
   
{
internal_channelUp[i]= iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,internal_channel,i));
internal_channelDn[i]= iLow(NULL,0,iLowest(NULL,0,MODE_LOW,internal_channel,i));
}
 Нужны данные с прошлого бара 
 
Pokrov:
 Нужны данные с прошлого бара 
int i,limit;
   limit=rates_total-prev_calculated-1;
if(prev_calculated<1) limit=rates_total-1;
for(i=limit; i>0; i--)
   
{
internal_channelUp[i]= iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,internal_channel,i+1));
internal_channelDn[i]= iLow(NULL,0,iLowest(NULL,0,MODE_LOW,internal_channel,i+1));
}
 
evillive:
НЕ увидел единицу в условиях, сорри сейчас проверю все.  
 
evillive:
iBarShift(), iLowest(), iHighest().
Можно по подробней, как связать все это воедино и задать диапазон времени нахождения точек хай и лоу ? (если можно живой пример кода)
P.s: начитаю изучать mql, прошу проявить терпение =)
 
evillive:
Все работает,спасибо Вам большое! 
 
Foxonn:
Можно по подробней, как связать все это воедино и задать диапазон времени нахождения точек хай и лоу ? (если можно живой пример кода)
P.s: начитаю изучать mql, прошу проявить терпение =)

По этим ключевым словам в справке можно прочитать много интересного, надо лишь в примере кода на нужном слове нажать F1.

Примерно код для встраивания в индикатор будет выглядеть так: 

input datetime timestart=D'2016.08.10 08:00'; //время поиска, от
input datetime timeend=D'2016.08.10 15:00';  //и до

int shiftstart=0,shiftend=0,diff=0; 
double hi=0,lo=0;

int OnCalculate()
{
/////
shiftstart=iBarShift(_Symbol,PERIOD_M5,timestart);                                 //выясняем индекс бара с временем старта поиска
shiftend=iBarShift(_Symbol,PERIOD_M5,timeend);                                     //выясняем индекс бара с временем финиша поиска 
diff=shiftstart-shiftend;                                                      //вычисляем кол-во баров для поиска экстремумов
lo=iLow(_Symbol,PERIOD_M5,iLowest(_Symbol,PERIOD_M5,MODE_LOW,diff,shiftend));  //выясняем минимум 
hi=iHigh(_Symbol,PERIOD_M5,iHighest(_Symbol,PERIOD_M5,MODE_HIGH,diff,shiftend)); //и максимум
//////
}
Причина обращения: