Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2533

 
Maxim Kuznetsov #:
timeToOpen
БОЛЬШОЕ БОЛЬШОЕ  СПС. зделал...
 
Здравствуйте! Есть ли в МТ5 возможность узнать на каком ТФ была открыта сделка экспертом? 
 
Sergei Gurov #:
Здравствуйте! Есть ли в МТ5 возможность узнать на каком ТФ была открыта сделка экспертом? 
В журнале должно быть написано
 
Tretyakov Rostyslav #:
В журнале должно быть написано

А как это получить программным путем? 

 
Еще возник вопрос, как в данном случае исправить ошибку Array out of range. Код выполнял в функции OnTick
Код следующий:
double high = iHigh(_Symbol,_Period,1);
CopyBuffer(MA_Handle,0 ,0,4,MA_BUF);   
int Ma_Sig =0;
double High_MA = iHigh(_Symbol,PERIOD_CURRENT,Ma_Sig+1);
if(high>MA_BUF[1]{
while(High_MA>MA_BUF[1+Ma_Sig]) Ma_Sig++;
text_clr10= clrGreen; bg_clr10 = clrBlack; border_clr10=clrBlack; 
}

Ошибку выбивает в строке с функцией while. Как это можно исправить?
 
Sergei Gurov #:
Как это можно исправить?

Описать словами, что же пытаетесь сделать... Код говорит о чём-то, как бы это назвать.., ммм,.. о написанном "на отвали"

 
Artyom Trishkin #:

Описать словами, что же пытаетесь сделать... Код говорит о чём-то, как бы это назвать.., ммм,.. о написанном "на отвали"

Хорошо. High бара должен быть меньше значения первой МА и при этом выше значения Второй МА. А также n баров назад было пересечение первой МА. Ну т.е код будет выглядеть примерно так 

//Функция OnTick
int MA_Signal =0;
//Поиск сигнала 
double high = iHigh(_Symbol,_Period,0)
if(high> Ma2_Buf[0] && high<Ma1_Buf[0]){
while(high[MA_Signal]>Ma1_Buf[MA_Signal] MA_Signal++;
//Далее выбираем цвет для окраски кнопки 
TextClr= ClrGreen;
}

И выдает ошибку Array Out of Range в строке while 

Как исправить эту ошибку? 

 
Sergei Gurov #:
Как исправить эту ошибку? 

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

А узнать в какой массив промахивается индекс можно, прочитав в сообщении об ошибке позицию курсора, а не просто Array Out of Range в строке while

 

Как-то раньше не замечал

Это нужно теперь с карты пополнить счёт тестера?

А если серьёзно, то как такое может быть, что счёт улетел в конкретный минус?

 
Vitaly Muzichenko #:

Как-то раньше не замечал

Это нужно теперь с карты пополнить счёт тестера?

А если серьёзно, то как такое может быть, что счёт улетел в конкретный минус?

Наверняка была куча локированных позиций. Вроде бы и просадки по эквити нет, и депозит растёт, а по завершении теста закрываются все позиции и по бо́льшей части в минуса. Вот и пролёт.