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

 

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

Если выводит в окне данных нужно два буфера, но в отрисовке участвует только первый буфер, а у второго стоит тип «DRAW_NONE» - без отрисовки, масштабирование происходит по второму буферу (значения второго буфера больше чем у первого).Хотя масштабирование по нему не должно проводиться (тип «DRAW_NONE»).

Первый буфер точность – 6 знаков после запятой (например - 0,0001249 индикатор АС). Второй буфер содержит значения -2, -1,0,1,2 (аналог - нет, неопределённо, да и т.д.)

 
SEM:

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

Если выводит в окне данных нужно два буфера, но в отрисовке участвует только первый буфер, а у второго стоит тип «DRAW_NONE» - без отрисовки, масштабирование происходит по второму буферу (значения второго буфера больше чем у первого).Хотя масштабирование по нему не должно проводиться (тип «DRAW_NONE»).

Первый буфер точность – 6 знаков после запятой (например - 0,0001249 индикатор АС). Второй буфер содержит значения -2, -1,0,1,2 (аналог - нет, неопределённо, да и т.д.)

Исправят в новом билде.
 

Почему компилятор молчит?

enum   ENUM_FILTER      {off,zero,model,main,fast,slow,upper,lower};

void OnStart()
{

double zero=5;//Почему компилятор молчит?
int d=(ENUM_FILTER)model;
int e=(ENUM_FILTER)zero;
Print("d=",d," zero=",zero," e=",e);
}

2017.11.23 16:16:53.518 test EURCHF,H1: d=2 zero=5.0 e=5


Разве мы не создали именованные константы при объявлении перечисления и имя "zero"=1 не заняли на глобальном уровне?
 
Kirill Belousov:

Почему компилятор молчит?

По той же причине

enum ENUM {i = 5};

void OnStart()
{
  int i = i + 1;
  
  Print(i);   // 6
  Print(::i); // 5
}
Используйте ::.
 
fxsaber:

По той же причине

Используйте ::.

Спасибо.

Прием с :: работает. Причем даже если enum задан внутри OnStart()

Просто если это бы была функция, то оно понятно. И в справке описано.

Но здесь же zero - инициализированная константа. Думал это разные вещи.

Вот и был вопрос - Почему компилятор не выдает предупреждения, что имя zero уже используется в глобальном контексте.

Где об этом в справке написано на почитать? Или это не документировано?

 
Kirill Belousov:

Почему компилятор не выдает предупреждения, что имя zero уже используется в глобальном контексте.

Недоработка. Если бы это был не enum, а переменная, то выдал бы "declaration of 'xxx' hides global declaration at line yyy". В СД пишите.

MQL5(4)-вопрос. Точка входа.
MQL5(4)-вопрос. Точка входа.
  • 2017.04.23
  • www.mql5.com
Всем привет. Приступил к изучению языка MQL5. Пока только прочитал "Основы языка" из документации...
 
Alexey Kozitsyn:
Исправят в новом билде.
Спасибо за информацию!
 
fxsaber:

Недоработка. Если бы это был не enum, а переменная, то выдал бы "declaration of 'xxx' hides global declaration at line yyy". В СД пишите.

В СД написал.

А если рассматривать случай что enum внутри OnStart().

Тоже не выдает предупреждение.

Здесь как связано с контекстом? Здесь же все внутри одной функции происходит...

Получается имена констант из enum вообще не проверяются на занятость имени. Заменяются в коде раньше проверок. Похоже?
 
Kirill Belousov:

В СД написал.

А если рассматривать случай что enum внутри OnStart().

Тоже не выдает предупреждение.

Здесь как связано с контекстом? Здесь же все внутри одной функции происходит...

Получается имена констант из enum вообще не проверяются на занятость имени. Заменяются в коде раньше проверок. Похоже?

Вы же в СД написали уже.

 

пишу советник,
при включении оптимизации в MT5, неоднократно получаю синий экран W10x64 b1653
может кто сталкивался с таким феноменом уже?
в чём причина может быть?