Ошибки, баги, вопросы - страница 2767

 
awsomdino:

может разработчики добавят возможность смотреть в отладчике из функции GetLastError();

иначе эти удобные и простые 2 строки бесполезны

Не пользуйтесь просто этой функцией.

 

С целью минимизации количества записей из прошлого "обзора" исправлений ранее исправленные дефекты не переносились:

Дефекты в работе шаблонной функции/класса:
(не исправлено MT5(build 2474)) ***          Compile Error, баг при попытке доступа к internal class для шаблонного параметра шаблонной функции.
(не исправлено MT5(build 2474)) **           Compile Error, баг касается возвращаемого значения шаблонной функции, когда возвращаемое значение - internal class, расположенный внутри шаблонного класса, тип параметра которого задается типом аргумента шаблонной функции.
(не исправлено MT5(build 2474)) **           Compile Error, баг связанный с пространством имен и области видимости в шаблонном конструкторе при вызове базового класса, когда используется одно и то же имя класса при наследовании и в internal class.
(не исправлено MT5(build 2474)) *            Compile Error, баг при вызове шаблонной функции с явным указанием типов аргументов, когда вызов выполняется из перегруженной нешаблонной функции.
(не исправлено MT5(build 2474))              Compile Error, баг при определении internal class - отсутствует возможность явно сослаться на глобальное пространство имен при указании базового класса.

(не исправлено MT5(build 2474)) *            Compile Error, при вызове оператора присвоения через явное указание базового класса. Проблема проявляется для шаблонного класса, у которого шаблонный параметр выступает базовым классом.
(исправлено MT5(build 2474))                       Compile Error, при использовании модификатора доступа по умолчанию при наследовании в шаблонном классе, когда шаблонный параметр выступает базовым классом.

(исправлено MT5(build 2474)) *         (new)   Compile Error, ошибка компиляции при наследовании от шаблонного класса из namespace.
(исправлено  MT5(build 2474)) **        (new)   Compile Error, отсутствует доступ к дефолтному operator= из объекта указателя.
(не исправлено MT5(build 2474)) ***  (new)   
Compile Error, ошибка компиляции для форвард декларации шаблонного метода класса .
(не исправлено MT5(build 2474)) **   (new)   Compile Error,  когда класс содержит указатель на класс-обертку, который использует данный класс как поле.


Дефекты связанные с несоответствием приоритетов вызовов перегруженных функций в MQL в сравнении с С++:
(не исправлено MT5(build 2474)) **           Compile Error, когда первая из перегруженных шаблонных функций использует полностью специализированный шаблонный базовый класс, а вторая - неспециализированный шаблонный базовый класс.
(не исправлено MT5(build 2474)) **           Compile Error, при генерации кода шаблонной функции возникает ошибка компиляции несмотря на то, что имеется перегруженная шаблонная функция с подходящей сигнатурой для передаваемых параметров.
(не исправлено MT5(build 2474)) *            Compile Error, "ambiguous call to overloaded function" при вызове перегруженных шаблонных функций с разным количеством шаблонных параметров.

( не исправлено  MT5(build 2474)) ***     Compile Error, ошибка в приоритетах вызова перегруженных шаблонных функций..
( не исправлено  MT5(build 2474)) **      Compile Error, при  вызове функции  для аргумента с типом данных color применяется implicit type conversation не смотря на то, что имеется подходящая по сигнатуре перегруженная шаблонная функция с типом данных color.
( не исправлено  MT5(build 2474)) *       Compile Error, не смотря на явную специализацию при вызове перегруженной шаблонной функции все равно происходит вызов шаблонной функции по умолчанию, что приводит к переполнению стека..
( не исправлено  MT5(build 2474)) *       Compile Error,  ошибка компиляции  при вызове функции через ее указатель, когда используется массив указателей на функцию.
( исправлено  MT5(build 2474)) *  (new) Compile Error, проблемы с приоритетом вызовом перегруженных в namespace функций.

Дефекты связанные с MetaEditor:
(не исправлено ME5(build 2474)) ***    Debuger, срабатывание точки останова в статическом методе структуры вызывает зависание МТ терминала.
(не исправлено ME5(build 2474)) **     Compilation, описание ошибки компиляции не влазит в лимит 256 символов и обрезается, в результате невозможно понять для какого типа данных возникает ошибка, так как необходимая часть была обрезана.
(исправлено ME5(build 2474)) **         Debuger, не работает StepInto (F11) и установленные breakpoints.
(исправлено ME5(build 2474)) *          Debuger, после срабатывания breakpoint вместо продолжения выполнения кода при нажатии (F5), в действительности повторно срабатывает тот же breakpoint без выполнения какого-либо кода.
(не исправлено ME5(build 2474)) *      Compilation, некорректная сигнатура шаблонного параметра функции в Error Description и Parameter info.
(не исправлено ME5(build 2474)) *      MetaEditor, не работает функциональность Replace (Сtrl + H) для включенного "In selection" вместе с "Backward direction", когда выделен необходимый участок применения, а не весь код.
(не исправлено ME5(build 2474)) * (new)  MetaEditor, срабатывание точки останова вводит пользователя в заблуждение, будто бы условие входа было выполнено, когда в действительности это может быть совсем не так.


Дефекты связанные с медленным выполнением функций, работой оптимизатора кода:
(исправлено MT5(build 2474)) **   (up)      Runtime, большой overhead при добавлении по одному элементу в массив с помощью ArrayResize, не смотря на то, что память для них была заранее зарезервирована, например для структур аж до 7-ми раз медленнее.


Предложения:
            - добавить в ME поиск/замену по текущему Project, а то при рефакторинге ходить по каждому из файлов и искать вхождение как-то не очень.
ссылка - в ME при компиляции заполнять пустые колонки File, Line, Column соответствующей информацией о файле источнике, из которого делался include.
ссылка - о внедрении поддержки intellisense для функциональности namespace на основе работы intellisense для статических методов в классах.
ссылка - о предоставлении возможности передавать литералы и временные переменные в виде const ref аргументов функции.
ссылка - при перемещении файлов проекта во вкладке "Project", для перемещаемых файлов, которые открыты и находятся во вкладках ME, автоматически обновлять их путь расположения.
ссылка - о необходимости введения в MQL typedef declaration функциональности.
ссылка - о предоставлении возможности принудительной генерации дефолтных конструкторов копирования и операторов присвоения.

 
Sergey Dzyublik :

С целью минимизации количества записей из прошлого "обзора" исправлений ранее исправленные дефекты не переносились:
...

Это в вашем списке? Если нет, не могли бы вы добавить это, пожалуйста.

Форум по трейдингу, автоматизированным торговым системам и тестированию торговых стратегий

Неправильный синтаксис MQL?

Дан Маринеску , 2020.05.27 22:47

Я определил универсальный интерфейс, и я хочу использовать его в другом классе. Я не могу понять, что не так с этим кодом:

 #property  strict

template < typename T> interface IGenericHandler {
     bool Handle(T &item);
};

#define  DOES_NOT_WORK

class GenericHandler {
     public :
#ifdef  DOES_NOT_WORK   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler);
#else   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif        
 };

#ifdef  DOES_NOT_WORK
template < typename T> bool GenericHandler::Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif 

Если DOES_NOT_WORK не определено, то все работает. Но когда DOES_NOT_WORK определен, компилятор говорит:

'Handle' - member function already defined with different parameters

Почему?


 
Alain Verleyen:

Это в вашем списке? Если нет, не могли бы вы добавить это, пожалуйста.

Спасибо за дополнение, да в списке есть описание данной проблемы:
(не исправлено MT5(build 2474)) ***  (new)   Compile Error, ошибка компиляции для форвард декларации шаблонного метода класса .

 
Sergey Dzyublik :

Спасибо за дополнение, да в списке есть описание данной проблемы:
( не исправлено  MT5(build 2474)) ***  (new)    Compile Error,  о шибка компиляции для форвард декларации шаблонного метода класса  .

Отлично, спасибо.
 
Приветствую. Событие инициализация происходит при включении терминала?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Уважаемая администрация. Кому здесь нужно написать по вопросам удаления аккаунта (c регистрацией в качестве продавца) с сайта mql5.com?
 

Здравствуйте! Есть индикатор для MT5 "Grid Builder", он рисует горизонтальные линии с шагом цены. Можно выбрать например 100п, 200п и тд. И строится горизонтальная сетка вверх и вниз с заданным шагом. Но у него одна  проблема, например, когда я  на таймфрейме  H4 рисую свою графические горизонтальные уровни( ставлю горизонтальные линии из инструментов рисования в терминале) и переключаю на любой другой таймфрейм, все мои линии удаляются. А остаются только горизонтальные уровни индикатора. Как в коде исправить эту ошибку? Чтобы мои горизонтальные уровни никогда не удалялись. Вот код индикатора. 

//+------------------------------------------------------------------+
//|                                                  GridBuilder.mq5 |
//|                                              Copyright 2015, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property indicator_chart_window

//---- для расчёта и отрисовки индикатора использовано ноль буферов
#property indicator_buffers 0
//---- использовано всего ноль графических построений
#property indicator_plots   0
//--- входные параметры 
input int count = 50;      //количество линий вверх вниз от цены
input int step  = 333;     //шаг линий 
input double pr = 1.4622;  //цена от которой пляшем
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ObjectsDeleteAll(0,0,OBJ_HLINE);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   ObjectsDeleteAll(0,0,OBJ_HLINE);
  }
//+------------------------------------------------------------------+ 
//| Создает горизонтальную линию                                     | 
//+------------------------------------------------------------------+ 
bool HLine(const string name="HLine",double price=0)
  {
//--- создадим горизонтальную линию 
   if(!ObjectCreate(0,name,OBJ_HLINE,0,0,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать горизонтальную линию! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clrGreen);
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
   return(true);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   double price=pr;
//--- создадим горизонтальную линию 
   for(int i=0;i<=count;i++)
     {
      HLine("HLine"+(string)i,price+step*i*_Point);
      HLine("HLine"+(string)(i+count+1),price-step*i*_Point);
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
 
Александр:

Здравствуйте! Есть индикатор для MT5 "Grid Builder", он рисует горизонтальные линии с шагом цены. Можно выбрать например 100п, 200п и тд. И строится горизонтальная сетка вверх и вниз с заданным шагом. Но у него одна  проблема, например, когда я  на таймфрейме  H4 рисую свою графические горизонтальные уровни( ставлю горизонтальные линии из инструментов рисования в терминале) и переключаю на любой другой таймфрейм, все мои линии удаляются. А остаются только горизонтальные уровни индикатора. Как в коде исправить эту ошибку? Чтобы мои горизонтальные уровни никогда не удалялись. Вот код индикатора. 

Пожалуйста, старайтесь вставить код правильно.

MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • www.mql5.com
Теперь вы можете не только читать статьи и скачивать программы на языке MQL5, но и участвовать в обсуждении интересующих вас тем на Форуме, оставлять комментарии к статьям и опубликованным кодам. Кроме того, вы можете не только выкладывать собственные разработки в Code Base, но и публиковать Статьи, за которые мы предлагаем вознаграждение...
 

Всем бобра.

При смене таймфрейма, который долго был не задействован, подвисает индикатор. Направьте меня, пожалуйста, где собака зарыта. Спасибо!