Новая версия платформы MetaTrader 5 build 2860: Улучшения для Wine и расширение интеграции с SQL - страница 2

 
Andrey Dik:

каким образом?

Биржа транслирует эти данные

 
Не работают новые макросы.
void OnStart()
{
  for (int i = 0; i < 10; i++)
  {
    Print(__COUNTER__);
    Print(__RANDOM__);
  }
}
 
fxsaber:
Не работают новые макросы.

Работают

void OnStart()
  {
   Print(__COUNTER__," ",__RANDOM__);
   Print(__COUNTER__," ",__RANDOM__);
   Print(__COUNTER__," ",__RANDOM__);
   Print(__COUNTER__," ",__RANDOM__);
   Print(__COUNTER__," ",__RANDOM__);
   Print(__COUNTER__," ",__RANDOM__);
   Print(__COUNTER__," ",__RANDOM__);
   Print(__COUNTER__," ",__RANDOM__);
   Print(__COUNTER__," ",__RANDOM__);
   Print(__COUNTER__," ",__RANDOM__);
  }
 
Ilyas:

Работают

Тогда просьба пояснить.

const bool Init = EventSetMillisecondTimer(200);

void OnTimer()
{
  static int i = 0;
  
  Print(__COUNTER__," ",__RANDOM__);
  
  if (++i == 10)
    ExpertRemove();
}
 
Ilyas:

Какие данные нужны, чтобы решить проблему CopyTicks?

void OnStart()
{
  MqlTick Ticks[];
  
  Print(CopyTicksRange("NZDUSD", Ticks, COPY_TICKS_ALL, D'2021.03.01' * 1000));
  
  Print(GetLastError());
}


Результат.

43766
0


Только с этой даты отдает на Win10.


На WinServer2019 никаких проблем.

 
fxsaber:

Тогда просьба пояснить.

Это специальные макросы (константы компиляции), при каждом использовании новое значение, __COUNTER__ - счётчик, __RANDOM__ - случайное число.

 
Ilyas:

Это специальные макросы (константы компиляции), при каждом использовании новое значение, __COUNTER__ - счётчик, __RANDOM__ - случайное число.

Так непонятно, когда счетчик обнуляется, а когда - нет.

 
fxsaber:

Так непонятно, когда счетчик обнуляется, а когда - нет.

Как я понял - подставляются при компиляции, т.е., при каждом упоминании в исходном тексте - новое значения.

 

MetaQuotes:

__COUNTER__ — увеличивается на единицу при каждом обращении. При использовании в шаблонах и макросах ведутся отдельные счетчики.

что то не так - или описание не соответствует или не работает:

#define MACRO_1(TXT) do\
                     Print(#TXT ," : ",__COUNTER__);\
                     while(0)

#define MACRO_2(TXT) do\
                     Print(#TXT ," : ",__COUNTER__);\
                     while(0)
void OnStart()
{
   MACRO_1("M_1");
   MACRO_2("M_2");
   MACRO_1("M_1");
   MACRO_2("M_2");
   MACRO_1("M_1");
   MACRO_2("M_2");
   MACRO_1("M_1");
   MACRO_2("M_2");
}

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_1 : 0

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_2 : 1

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_1 : 2

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_2 : 3

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_1 : 4

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_2 : 5

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_1 : 6

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_2 : 7


ожидалось, что будут раздельнеы в каждом макросе увеличения счетчиков, а получилось один счетчик, который увеличивается при каждом обращении

 
Igor Makanu:

что то не так - или описание не соответствует или не работает:

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_1 : 0

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_2 : 1

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_1 : 2

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_2 : 3

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_1 : 4

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_2 : 5

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_1 : 6

2021.03.27 12:51:55.272 tst (EURUSD,H1) M_2 : 7


ожидалось, что будут раздельнеы в каждом макросе увеличения счетчиков, а получилось один счетчик, который увеличивается при каждом обращении

А я именно так и понял когда прочёл об этом в описании…

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