错误、漏洞、问题 - 页 2074

 

当使用底部窗口的指示器时,自动缩放不能正确工作。

如果在数据窗口 中需要两个缓冲区,但只有第一个缓冲区参与绘图,而第二个缓冲区有 "DRAW_NONE "类型--没有绘图,缩放由第二个缓冲区执行(第二个缓冲区的值比第一个缓冲区多),尽管缩放不应该由它执行(类型 "DRAW_NONE")。

第一个缓冲区精确到小数点后6位(例如--0.0001249 AC指标)。第二个缓冲区包含数值-2,-1,0,1,2(模拟-不,未定义,是等)。

 
SEM:

当使用底部窗口的指示器时,自动缩放不能正确工作。

如果在数据窗口 中需要两个缓冲区,但只有第一个缓冲区参与绘图,而第二个缓冲区有 "DRAW_NONE "类型--没有绘图,缩放由第二个缓冲区执行(第二个缓冲区的值比第一个缓冲区多),尽管缩放不应该由它执行(类型 "DRAW_NONE")。

第一个缓冲区精确到小数点后6位(例如--0.0001249 AC指标)。第二个缓冲区包含数值-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


在声明枚举时,我们不是创建了命名的常量 吗?"零"=1这个名字不是占据了全局水平吗?
 
Kirill Belousov:

为什么编译器不说话?

出于同样的原因。

enum ENUM {i = 5};

void OnStart()
{
  int i = i + 1;
  
  Print(i);   // 6
  Print(::i); // 5
}
使用 ::。
 
fxsaber:

出于同样的原因。

使用 ::。

谢谢你。

:: 枚举的作用。即使在OnStart()中指定了枚举,它也能工作。

只是,如果它是一个函数,那就可以理解了。它在帮助中也有描述。

但这里的零是一个初始化的常数。我以为这些是不同的东西。

这就是为什么我问--为什么编译器不产生一个警告,即零名已经在全局上下文中使用?

帮助中哪里写了?还是无证经营?

 
Kirill Belousov:

为什么编译器不产生一个警告,说零已经在全局上下文中被使用了。

错误。如果它不是一个枚举,而是一个变量,就会产生"'xxx'的声明在yy行隐藏了全局声明"。写入SD。

MQL5(4)-вопрос. Точка входа.
MQL5(4)-вопрос. Точка входа.
  • 2017.04.23
  • www.mql5.com
Всем привет. Приступил к изучению языка MQL5. Пока только прочитал "Основы языка" из документации...
 
Alexey Kozitsyn:
将在新版本中修复。
谢谢你提供的信息!
 
fxsaber:

缺陷。如果它不是一个枚举,而是一个变量,它将返回"'xxx'的声明在yy行隐藏了全局声明"。写入SD。

我是用SD写的。

而如果我们考虑enum在OnStart()里面的情况。

它也不会产生警告。

这与背景有什么关系?所有的事情都发生在这里的一个函数中...

事实证明,枚举中的常量名称根本没有被检查是否被占用。它们在检查前的代码中被替换。看起来是这样吗?
 
Kirill Belousov:

SD已经写了。

而如果我们考虑OnStart()里面枚举的情况。

它也不会产生一个警告信息。

这与背景有什么关系?一切都发生在这里的一个函数中。

事实证明,来自枚举的常量名称根本没有被检查是否被占用。它们在检查前的代码中被替换。它看起来像那样吗?

你已经在SD中写过了。

 

我正在写一个EA。
当我在MT5中启用优化时,我反复得到蓝屏W10x64 b1653
可能有人遇到过这种现象?
它的原因是什么?