Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1373

 
Пытаюсь.
 
Nikita Chernyshov #:

Буфер надо отлавливать не цветом, а значением.

Посмотрите, что выдает буфер, когда изменяет цвет.

т.е. допустим, есть 2 буфера. Красный и зеленый.

Выведи эти два буфера через Commen и проследите, что показывает буфер, когда он "активен". Это числовые значения. Вот с ними и взаимодействуете. 

Не надо давать советы которые подходят к mql4 и не всегда подходят к mql5

 
Oleg Kolesov #:
Здравствуйте. Как все-таки получить индекс цвета в советнике? (Получить сигнал при смене цвета).

Как правило в индикаторе сначала идёт буфер значений, а следом идёт буфер цвета.

   SetIndexBuffer(0, buffMACD, INDICATOR_DATA);           // Буфер данных
   SetIndexBuffer(1, colorBuff, INDICATOR_COLOR_INDEX);   // Буфер цвета
   SetIndexBuffer(2, buffSignal, INDICATOR_DATA);         // Буфер данных
   SetIndexBuffer(3, colorSignal, INDICATOR_COLOR_INDEX); // Буфер цвета

А потом получив handle индикатора копируешь значения 1го или 3го буфера. Там могут быть значения только целые от нуля, 0 и выше, в зависимости от количества цветов заданных в индикаторе. Всё это надо знать во время программирования советника.

 

Подскажите, как правильно создавать графический объект в MQL5, чтобы избежать ошибки 4202?

В MQL4 пользовался таким кодом:

   string Obj_Rectangle="Object"; 

   if(ObjectFind(0,Obj_Rectangle)==-1)                               
     {
      ObjectCreate(0,Obj_Rectangle,OBJ_RECTANGLE_LABEL,0,0,0);        
      ObjectSetInteger(0,Obj_Rectangle,OBJPROP_CORNER,0);
      ObjectSetInteger(0,Obj_Rectangle,OBJPROP_XDISTANCE,100);
      ObjectSetInteger(0,Obj_Rectangle,OBJPROP_YDISTANCE,100);
      ObjectSetInteger(0,Obj_Rectangle,OBJPROP_XSIZE,200);
      ObjectSetInteger(0,Obj_Rectangle,OBJPROP_YSIZE,150);
      ObjectSetInteger(0,Obj_Rectangle,OBJPROP_BGCOLOR,clrBlue);
     }
     
   Alert(_LastError);

Но в MQL5 ObjectFind() возвращает error 4202

 
leon_17 #:

Подскажите, как правильно создавать графический объект в MQL5, чтобы избежать ошибки 4202?

В MQL4 пользовался таким кодом:

Но в MQL5 ObjectFind() возвращает error 4202

Если объект не найден, то это и есть ошибка поиска объекта…

ERR_OBJECT_NOT_FOUND

4202

Графический объект не найден


Не надо его алертить…

 
Алексей спасибо за желание помочь. У вас тоже принцип: голодному удочку, а не рыбу.
 
Alexey Viktorov #:

Если объект не найден, то это и есть ошибка поиска объекта…

ERR_OBJECT_NOT_FOUND

4202

Графический объект не найден


Не надо его алертить…

Ну, когда-то я был научен, что _LastError вообще не должен возвращать никаких ошибок. И кажется даже это было требованием маркета. Теперь уже всё не так строго?

И еще, насколько я понимаю, эта ошибка может перезаписать, какую-либо другую более важную ошибку в коде, как с этим справиться? 

 
leon_17 #:

Ну, когда-то я был научен, что _LastError вообще не должен возвращать никаких ошибок. И кажется даже это было требованием маркета. Теперь уже всё не так строго?

И еще, насколько я понимаю, эта ошибка может перезаписать, какую-либо другую более важную ошибку в коде, как с этим справиться? 

В переменной _LastError хранится значение последней ошибки, произошедшей во время исполнения mql5-программы.

Вас кто-то плохо учил. Переменная _LastError будет хранить полученное значение до тех пор, пока не произойдёт следующая, очередная ошибка.

Требованием маркета является отсутствие ошибок исполнения получаемых от сервера брокера\дц. Читайте документацию

Документация по MQL5: Предопределенные переменные / _LastError
Документация по MQL5: Предопределенные переменные / _LastError
  • www.mql5.com
_LastError - Предопределенные переменные - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Oleg Kolesov #:
Алексей спасибо за желание помочь. У вас тоже принцип: голодному удочку, а не рыбу.
Не просто удочку, а пояснение где почитать о решении проблемы. Если человек хочет разобраться в проблеме, я готов потратить время пока он не поймёт мои слова. Но если просят, сделай, а я по этому шаблону разберусь, значит человек разбираться не будет. Ему надо чтобы кто-то сделал, а дальше, хоть трава не расти…
 
Согласен.
Причина обращения: