Новая версия платформы MetaTrader 5 build 5660: улучшения и исправления - страница 7

 

Результат выполнения зависит от того, была ли открыта вкладка inputs при запуске скрипта. Настройки дефолтные.

  • Вкладка inputs не была открыта

  • Вкладка inputs была открыта

#property script_show_inputs

namespace N1
{
input int x = 12;
}

namespace N2
{
input int x = 34;
}

void OnStart()
  {
   PrintFormat("#1 %i, #2 %i, mql build "string(__MQLBUILD__), N1::x, N2::x);
  }
 

Я ожидал macro redefinition warning


 

Компилятор обращает внимание на mqproj файл не смотря на то, что проект не открыт в редакторе (build 5677).

 
Vladislav Boyko # :
Результат выполнения зависит от того, была ли открыта вкладка inputs при запуске скрипта.
Vladislav Boyko # :

Я ожидал macro redefinition warning


И то, и другое подтверждено и подтверждено.
 
Vladislav Boyko # :

Компилятор обращает внимание на mqproj файл не смотря на то, что проект не открыт в редакторе (build 5677).

В этом нет ничего нового, и это, вероятно, стандартная функция.

 
Alain Verleyen #:

В этом нет ничего нового, и это, вероятно, стандартная функция.

Раньше mqproj игнорировался при компиляции, если проект не открыт в редакторе (на сколько я помню). Но это неважно, честно говоря, поэтому давайте считать, что оно работает как задумано.

Previously, mqproj was ignored during compilation if the project wasn't opened in an editor (as far as I remember). But it doesn't really matter, frankly, so let's assume it works as intended.

 

b5677, неправильно формируется первый бар старших таймфреймов.

bool GetFirstBar( MqlRates &Rates, const ENUM_TIMEFRAMES ePeriod = PERIOD_CURRENT, const string Symb = NULL )
{
  MqlRates TmpRates[1];  
                   // https://www.mql5.com/ru/forum/1111/page3724#comment_59372585
  const bool Res = (CopyRates(_Symbol, ePeriod, Bars(Symb, ePeriod) - 1, 1, TmpRates) > 0);
  
  if (Res)
    Rates = TmpRates[0];
    
  return(Res);
}

void OnStart ()
{
  MqlRates RatesMN1;
  MqlRates RatesM1;
  
  if (GetFirstBar(RatesMN1, PERIOD_MN1) && GetFirstBar(RatesM1, PERIOD_M1))
  {
    Print(RatesMN1.time); // 1998.05.01 00:00:00
    Print(RatesM1.time);  // 1998.04.22 00:00:00
  }
}

Месяц первого MN1-бара не совпадает с месяцем первого M1-бара.

Строка для поискаOshibka 164.

 
fxsaber #:

b5677, неправильно формируется первый бар старших таймфреймов.

Месяц первого MN1-бара не совпадает с месяцем первого M1-бара.

Строка для поискаOshibka 164.

Это не ошибка. Просто у вас не достроены бары MN1. Терминал иногда экономит при запросах от экспертов.

Либо надо проскролить чарт с MN1, либо явно запросить данные из эксперта по дате, а не по номеру бара.

 
fxsaber #:

b5677, неправильно формируется первый бар старших таймфреймов.

Месяц первого MN1-бара не совпадает с месяцем первого M1-бара.

Строка для поискаOshibka 164.

Для чистоты эксперимента нужно бы выводить получаемые значения Bars, а также все свойства из перечня: TERMINAL_MAXBARS, SERIES_TERMINAL_FIRSTDATE, SERIES_SYNCHRONIZED.

Отличие количества и времени начала истории баров на разных таймфреймах - обычное дело в МТ5.

 
Vladislav Boyko # :

Раньше mqproj игнорировался при компиляции, если проект не открыт в редакторе (на сколько я помню). Но это неважно, честно говоря, поэтому давайте считать, что оно работает как задумано.

Previously , mqproj was ignored during compilation if the project wasn't opened in an editor (as far as I remember). But it doesn't really matter, frankly, so let's assume it works as intended.

Нет. Я проверил.