错误、漏洞、问题 - 页 311

 

新版本中的错误,只可能在x64系统(特别是Windows 7,Core i7处理器)上出现。在以前的版本中没有这样的错误。这个错误有以下含义。

如果我不对Expert Advisor的源代码做重大改变(例如,只改变某些变量的值),之后再重新编译,测试结果 仍然是一样的。

我甚至到了以下:

在void OnTick()函数中,我插入了return;:)编译,运行,结果是一样的!!!!。虽然在一般情况下,这条线路应该是。

解决的办法是,要么删除*.ex5文件并重新编译,要么写一些垃圾来让编译器启动,然后再编译。

明天我将检查同样的事情是否发生在x32位操作系统上。

我还注意到,在x64上用图表打开新窗口需要太长的时间,而删除这些图表也需要太长的时间

终端挂起了 "无响应 "的字样,大约5秒钟。

 
bobsley:

新版本中的错误,只可能在x64系统(特别是Windows 7,Core i7处理器)上出现。在以前的版本中没有这样的错误。这个错误有以下含义。

如果我不对Expert Advisor的源代码做重大改变(例如,只改变某些变量的值),之后再重新编译,测试结果仍然是一样的。

我甚至到了以下:

在void OnTick()函数中我插入了return;:)编译,运行,结果是一样的!!!!。虽然在一般情况下,这条线路应该是。

解决的办法是,要么删除*.ex5文件并重新编译,要么写一些垃圾来让编译器启动,然后再编译。

明天我将检查同样的事情是否发生在x32位操作系统上。

我还注意到,在x64上用图表打开新窗口需要太长的时间,而删除这些图表也需要太长的时间

终端挂起了 "无响应 "的字样,大约5秒钟。

检查这个文件夹(用户名: Username\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5)也许你的EA会在那里编译。
 
bobsley:

新版本中的错误,只可能在x64系统(特别是Windows 7,Core i7处理器)上出现。在以前的版本中没有这样的错误。这个错误有以下含义。

如果我不对Expert Advisor的源代码做重大改变(例如,只改变某些变量的值),之后再重新编译,测试结果仍然是一样的。

我甚至到了以下:

在void OnTick()函数中我插入了return;:)编译,运行,结果是一样的!!!!。虽然在一般情况下,这条线路应该是。

解决的办法是,要么删除*.ex5文件并重新编译,要么写一些垃圾来让编译器启动,然后再编译。

明天我将检查同样的事情是否发生在x32位操作系统上。

...

我没有特别抓住这个错误,但我注意到在32位上也有类似的行为。它是在你编译一个你没有完成的表达式时设置的错误,比如分号。
[删除]  
Im_hungry:
当然有历史,但不是所有的虫子都有传播的历史!

1.我们不谈所有的事情,只谈这个,开发者的服务器--access.metatrader5.com:443(好吧,目前我还没有遇到在MT5中历史更好的人)。

就拿我的剧本来说吧,它不是很好,但尽管如此,它还没有完成。让我们在TF "1周 "和条数 930上运行它。

我们得到以下结果

2011.02.22 11:38:50     -   1:1993.05.09 00:00 open = 1.2368, high = 1.2368, low = 1.2084, close = 1.219, volume = 252, spread = 50
2011.02.22 11:38:50     -   0:1993.05.02 00:00 open = 1.2334, high = 1.2466, low = 1.2267, close = 1.2332, volume = 0, spread = 0
2011.02.22 11:38:50     -   Скопировано баров: 930

显然,周线上的价差是从1993.05.02开始的,条线的历史更深。但如果欧元从1999年起就正式存在,这个数据可能就不那么深刻了(尽管,上帝与它同在,这是一个不同的问题)。

2.现在让我们尝试在日线图上指定点差信息的深度。

让我们以一周有5个交易日的事实为基础,尝试在日线图上找到点差数据的历史起点(我将从一开始就告诉大家大概的数字是4630)。

2011.02.22 11:56:06     -   2:1993.05.13 00:00 open = 1.2148, high = 1.2158, low = 1.2084, close = 1.2099, volume = 100, spread = 50
2011.02.22 11:56:06     -   1:1993.05.12 00:00 open = 1.2138, high = 1.2171, low = 1.2105, close = 1.2152, volume = 0, spread = 0
2011.02.22 11:56:06     -   0:1993.05.11 00:00 open = 1.2167, high = 1.2202, low = 1.2121, close = 1.2141, volume = 0, spread = 0
2011.02.22 11:56:06     -   Скопировано баров: 4630

因此我们可以看到,日线上的价差历史是从1993.05.13开始的。

PS

我想通过类比来进一步整理(按照我的理解,最小的时间框架上最古老的日期,将是我们要找的那个地方)......

我只想指出,传播上。

自1993.05.13以来,H12可用(但我理解为每天都有条子)--深度大约为7790条。

H6从1993.05.13开始提供(日线)--深度大约为14100条

 
sergey1294:
检查这个文件夹( Username\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5)也许你的EA会在那里编译。

我检查了,当然,都是空白。And why would it be, I've got the esperts in .../Experts\Examples\

这就是他们的汇编出现的地方。

今天我在工作中用x32操作系统检查了它。在升级之前,它是好的,升级了终端,立即出现了同样的故障!

 
 double op, sp;
     
     if ( ObjectGetDouble ( 0,"Open", OBJPROP_PRICE,0,op) &&  ObjectGetDouble ( 0,"Stop", OBJPROP_PRICE,0,sp ) ){
     
        if ( is40x_b0[0] > 0 && Tick.bid > op && Tick.bid < sp ){ <--------------- Дает предупреждение possible use of uninitialized variable 'sp'
         Sell(); 
        }
        
        if ( is40x_b1[0] > 0 && Tick.ask < op && Tick.ask > sp ){
         Buy(); 
        }

     }
 
Academic:


必须是这样的
 double op=0, sp=0;
 
sergey1294:
它必须是这样的。
为什么?
 
Academic:
为什么?

这真的没有什么错。

这些变量在初始化过程中被重置。

在这里你可以查看一下。

int i;

printf("i=%d",i)。

 
bobsley:

这真的没有什么错。

这些变量在初始化过程中被重置。

在这里你可以查看一下。

int i;

printf("i=%d",i)。

这个警告不应该被给出,因为一个引用被传递给了ObjectGetDouble函数,if语句检查两个调用返回的真值,因此只有当两个函数都返回真值时,这些变量才会被处理,这意味着这两个变量不能被设置为正确的值。

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5