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

 
Vitaly Muzichenko:

Используйте кнопку для вставки кода!

Спасибо)) Буду теперь знать)) я указал в каком месте выдает ошибку при компиляции
double Price;                                                               // Цена выбранного ордера
  double Mas[];                                                                //массив для упорядочивания всех ордеров
  for(int i=0; i<OrdersTotal(); i++)                                           // Цикл перебора ордер
   {
    if(OrderSelect(i,SELECT_BY_POS))                                           // Если есть следующий
     {
      Price=OrderOpenPrice();                                                    //Заполняем массив ценами
      Mas[i] = Price;
     }
   }
  
          ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND);                           // Теперь цены открытия упорядочены по убыванию
          
        int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND);           //Определен индекс ближайшего меньшего по значению елемента к текущей цене
        double PriceBlizko1=Mas[Blizko1];
     
     }  
      if (PriceBlizko1-Ask>=30*Point)                          //Если верхний ордер дальше чем 30 пунктов !!!! 'PriceBlizko1' - undeclared identifier!!!!!

       {OrderSend(Symbol(),OP_BUY,LtsB,Ask,2,0,Bid+30*Point);      //Открываем ордер Бай
               Alert (GetLastError());                                    //Сообщение об ошибке
Странно ведь PriceBlizko1 описана в строке выше
 

Что, никто не пользуется индикаторами от ClusterDelta?

 
vikzip:
Спасибо)) Буду теперь знать)) я указал в каком месте выдает ошибку при компиляции
Странно ведь PriceBlizko1 описана в строке выше

Она описана именно в строке выше. Её нужно определить на глобальном уровне, чтобы была доступна всем блокам, а не только локальному(текущему)

 
voron_026:

Что, никто не пользуется индикаторами от ClusterDelta?

Читать объекты, и брать с них данные: ObjectGetDouble

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. [in]  Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора...
 
Vitaly Muzichenko:

Она описана именно в строке выше. Её нужно определить на глобальном уровне, чтобы была доступна всем блокам,  не только локальному(текущему)


Спасибо)

 

Вроде бы закончил написание советника, но выскакивает ошибка

')' - not all control paths return a value

С чем это может быть связано. Попробовал поставить return, в ошибке меняется

'return' - function must return a value


possible use of uninitialized variable 'Ticket'
possible use of uninitialized variable 'LtsB'
possible use of uninitialized variable 'LtsS'
'return' - function must return a value
1 error(s), 3 warning(s)

Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Для разработки торговых систем в платформу встроен собственный язык программирования MetaQuotes Language 5 (MQL5), среда разработки MetaEditor и инструменты тестирования стратегий. Любую информацию о разработке торговых стратегий на языке MQL5 можно найти на официальном сайте MQL5.community. На этом же сайте в разделе Code Base могут быть...
 
vikzip:

Вроде бы закончил написание советника, но выскакивает ошибка

')' - not all control paths return a value

С чем это может быть связано. Попробовал поставить return, в ошибке меняется

'return' - function must return a value


Может нужен такой return(0);

 
Vitaly Muzichenko:

Может нужен такой return(0);


ААААА УРА!!!! СПасибо!!

 
vikzip:

ААААА УРА!!!! СПасибо!!

А чего "спасибо"-то? Функция должна возвращать значение. А вы всегда возвращаете ноль. Если она у вас по задумке ничего не возвращает, то её тип должен быть void.

 
Artyom Trishkin:

В mql4, mql5 в функцию массив всегда передаётся только по ссылке (& == амперсанд)

Сначала - в формальных параметрах функции - амперсанд есть, и говорит о том, что в функцию передаётся не сам массив, а ссылка на него. А далее - внутри функции - вы уже работаете со ссылкой, а значит и не нужно заново это указывать.

Ну а тильда (~) пишется перед названием деструктора класса - конструктор и деструктор имеют то же имя, что и сам класс, но у деструктора есть ~.

Вот почитайте статью о том, когда нужно использовать ссылки, а когда указатели.

Хотя, впрочем, вам пока ещё азы нужно читать.

Спасибо!

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