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

[Удален]  
Vict:

билд 2135 вообще поломанный

сто лет компилировалось, в новом билде сломалось.

Обманываю, нормально всё, в один из абортов вызывался в виде
abort();

раньше компилятор съедал, а в новом билде отказался, наверное что-то подправили (ну вряд ли я случайно ноль удалил).

 
Обратил внимание, что при компиляции ME загружает 2 ядра (26%) процессора, возникает вопрос - это многопоточность, тогда почему не использовать бы все ядра для компиляции или это ошибка в виде нерационального использования ресурсов?
 
Vict:
Обманываю, нормально всё, в один из абортов вызывался в виде

раньше компилятор съедал, а в новом билде отказался, наверное что-то подправили (ну вряд ли я случайно ноль удалил).

Кстати надо просить разработчиков, чтобы ввели штатный аборт, ассерт … В идеале конечно и исключения. Но хотя бы с малого начать.
 
Alexey Navoykov:
Кстати надо просить разработчиков, чтобы ввели штатный аборт, ассерт … В идеале конечно и исключения. Но хотя бы с малого начать.

замолвите слово, я, если не ошибаюсь, то еще в прошлом цикле своих занятий MQL это просил, года 4 как прошло, холивар правда от грамотеев пришлось выслушать, мол да не нужно это , пиши так... ну в общем все как обычно, а как разорвать выполнение программы при наличии критической ошибке доступа к данным OHLC или индикатора... просмотрел пол кодобазы, да некоторые кодописатели  проверяют эти условия, но обработки нет, максимум с вежливым видом вывод в лог эксперта, типа мол беда произошла, ты не переживай в общем, я дальше буду работать с некорректными данными на этом тике )))

ЗЫ: накипело, нужен простой способ прекратить обработку текущего тика! - прекратить работу эксперта значит можно, а вот прекратить обработку одного тика выдумывай и выкручивайся - подозреваю что на уровне компилятора abort() реализуется не сложнее ExpertRemove() - который уже существует

ЗЫЗЫ: задача написания эксперта под MQL без abort() в процедурном стиле больше похожа на изобретение, чем на сложить код из готовых подпрограмм, подозреваю, что вот эти постоянные дискуссии как написать индикатор который может правильно подгрузить историю по другому ТФ тоже будут проще решены с использованием abort() - еще не размышлял на эту тему

 
Igor Makanu:

замолвите слово, я, если не ошибаюсь, то еще в прошлом цикле своих занятий MQL это просил, года 4 как прошло, холивар правда от грамотеев пришлось выслушать, мол да не нужно это , пиши так... ну в общем все как обычно

Вот-вот, чуть заикнёшься, сразу повылезают эти грамотеи изо всех щелей, мол "это вам не С++" )

нужен простой способ прекратить обработку текущего тика! - прекратить работу эксперта значит можно, а вот прекратить обработку одного тика выдумывай и выкручивайся - подозреваю что на уровне компилятора abort() реализуется не сложнее ExpertRemove() - который уже существует

Ну вот у меня и abort, и assert реализованы точно так же делением на ноль, как и в приведённом выше коде.  Хотя это конечно некрасиво, и иногда путаюсь, т.к. предшествующее сообщение в логе не всегда замечаю.  Может есть какая-то другая ошибка, чтобы выдавала в логе что-то типа "internal error" ?   Это хоть не так позорно выглядело бы )

 
Alexey Navoykov:

Вот-вот, чуть заикнёшься, сразу повылезают эти грамотеи изо всех щелей, мол "это вам не С++" )

Ну вот у меня и abort, и assert реализованы точно так же делением на ноль, как и в приведённом выше коде.  Хотя это конечно некрасиво, и иногда путаюсь, т.к. предшествующее сообщение в логе не всегда замечаю.  Может есть какая-то другая ошибка, чтобы выдавала в логе что-то типа "internal error" ?   Это хоть не так позорно выглядело бы )

вот @Vict помогал исключение с выходом в ОС через макроподстановки сделать  https://www.mql5.com/ru/forum/318246/page10#comment_12651045

, в целом работоспособное решение, но... но выглядит жутко и отвратительно! )))

 
Igor Makanu:

вот @Vict помогал исключение с выходом в ОС через макроподстановки сделать  https://www.mql5.com/ru/forum/318246/page10#comment_12651045

, в целом работоспособное решение, но... но выглядит жутко и отвратительно! )))

Да это вообще жесть какая-то... Оборачивать return в макрос - это надо знать толк в извращениях )  Как потом разбираться в таком коде...  Надо тогда хоть название макроса сделать более говорящее, типа TRY_OR_RETURN
 
Alexey Navoykov:
Да это вообще жесть какая-то... Оборачивать return в макрос - это надо знать толк в извращениях )  Как потом разбираться в таком коде...  Надо тогда хоть название макроса сделать более говорящее, типа TRY_OR_RETURN

)))

я посмотрел как это выглядит и не пользуюсь, пишу по старинке if(!myfunc()) return; в OnTick() - код из сплошных ифов весь ... тож выглядит довольно умилительно и забавно ))))

 

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

Новая версия платформы MetaTrader 5 build 2085: Интеграция с Python и массовые улучшения в тестере стратегий

Andrey Barinov, 2019.09.06 06:25

Можете все-таки пояснить, почему в этом коде теперь предупреждение?

Методы имеют разные сигнатуры...

class A
  {
   public:
                     A(void) {}
                    ~A(void) {}
      //===============
      void           Test(void) {}
      //===============
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+  
class B : public A
  {
   public:
                     B(void) {}
                    ~B (void) {}
      //===============
      void           Test(int a) {}
      //===============
  };
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   B b;

   b.Test(); //deprecated behavior, hidden method calling will be disabled in a future MQL compiler versions
   b.Test(5);
//---
   return(INIT_SUCCEEDED);
  }

 

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

Новая версия платформы MetaTrader 5 build 2085: Интеграция с Python и массовые улучшения в тестере стратегий

Andrey Barinov, 2019.09.06 06:11

В билде 2136 сломали typename()

Прошу починить обратно.

enum eTest
  {
   TEST
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Alert(typename(eTest)); // eTest::eTest а правильно (и раньше так было) eTest
//---
   return(INIT_SUCCEEDED);
  }

typename