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

 

Небольшой казус в МТ 4   в МТ 5 не проверял...


 

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

Новая версия платформы MetaTrader 4 build 1170

fxsaber, 2019.05.28 14:24

Отловил незнакомое отличие MT4 от MT5. Это баг MT4?
#property strict

bool Print2( const string Str )
{
  Print(Str);
  
  return(true);
}

void Func()
{
  static bool b = Print2(__FUNCSIG__); // MT4 - вызывается, MT5 - нет.
}

void OnStart() {}
 
fxsaber:

В пятёрке сделали правильную инициализацию статиков. По первому доступу.

В четвёрке не делали. И неизвестно когда сделаем.

 

build 2062: Ошибка 5305 при создании custom символа. 

В 2060 все Ок.

Помню, в МТ4 был ключ командной строки /skipupdate

Есть ли что-то подобное в МТ5? Как запретить обновления?

 

fxsaber:

MT4 - вызывается, MT5 - нет.

Похоже, вы компилируете старым компилятором.  Компилируйте современным (идущим в составе MT5), и всё будет как надо.
 
Alexey Navoykov:
Похоже, вы компилируете старым компилятором.  Компилируйте современным (идущим в составе MT5), и всё будет как надо.

Компилировал через 1966. Попробовал 2062 в MT4 - работает правильно. Спасибо!

Жаль, это не победить.

 

К разработчикам.

Очень неудобный просмотр значений переменных в отладчике.

Например, сложные объекты выглядат так:


чтобы посмотреть содержимое, нужно руками ввести так:



даже в этом случае содержимое этого элемента вытяно в строку и значеня поле не выдны.

Просьба прокомментировать - планируется развитие в следующем направлении. Например:

Объект колллекция:



Жмем F2:



Любой элемен коллекция, который содержит поля можно удобно просмотреть так:


 

Из-за вызова в тестере стратегий такой функции:

void SleepReal(int milliseconds){
   datetime current_time = GetTickCount();
   while(GetTickCount() - current_time < milliseconds){
      //if(MQLInfoInteger(MQL_TESTER)){
      //}else{
         Sleep(milliseconds);
      //}
   }
}

Возникает ошибка:

2019.05.30 15:14:06.888 SD-PC   pass 0 tested with error "critical runtime error 512 in OnInit function (sleep function reaches end of test)" in 0:00:00.329
2019.05.30 15:14:06.888 SD-PC   pass 1 tested with error "critical runtime error 512 in OnInit function (sleep function reaches end of test)" in 0:00:00.072


Раскомментировав закомментированное можно обойти данное поведение.

 
Есть 2 индикатора, которые работают на 1 графике. Смена пользовательских параметров одного из них часто приводит к зависанию самого терминала, build 2063. Раньше такой проблемы не наблюдалось. К кому из админов можно обратиться? Спасибо
 

привет всем!

такой вопрос:

в мультивалютном советнике как получить id графика, символ которого отличается от символа на котором запущен тест?

использую такую функция, для получения возвращает только id графика теста, для всех остальных - 1!

long GetChartId(const string symbol,const ENUM_TIMEFRAMES prd)
{
   long res = ChartFirst();
   
   while(res > 0)
   {
      if(ChartSymbol(res) == symbol && ChartPeriod(res) == _Period)
      {
         break;
      }
      
      res = ChartNext(res);
   }
   
   return res;
}