错误、漏洞、问题 - 页 1628

 
HistoryOrderGetInteger(OrderTicket,ORDER_TIME_DONE_MSC) - 在测试者中返回0!
 

审查员打开文件时出错。例如,如果

1. 删除 "一些不相关的代码"(见下文)。

2. 或删除 ::Sleep(1000)

没有错误

//Test.mq5
#import "Test001.ex5"
        string f( string file );
#import
string __Period() { return StringSubstr( EnumToString((ENUM_TIMEFRAMES)Period()), 7 ); }
void OnInit()
{
        Print( Symbol(), ",", __Period(), ", результат=", f( "test.txt" ));
}

行动的顺序。

1.创建一个新的配置文件(如 "测试")。

2.打开两个新的图表,将Test.ex5专家顾问附在两个图表上(见图)。

4.选择任何其他现有的配置文件

5.选择 "测试 "配置文件

结果。

Test001.mq5看起来像这样。

//Test001.mq5
#property library
//---
//здесь некий код не имеющий отношения к делу
//---
string f( string file ) export
{
        ::ResetLastError();
        int hFile = ::FileOpen( file, FILE_READ | FILE_SHARE_READ | FILE_TXT | FILE_ANSI | FILE_COMMON );
        if ( hFile == INVALID_HANDLE )
                return ::StringFormat( "Error(%d): Не был открыт файл: %s", ::GetLastError(), file );
        ::Sleep( 1000 );
        ::FileClose( hFile );
        return "OK";
}
附加的文件:
Test001.ex5  16 kb
 

test.txt文件本身没有附在信息中,但看起来像这样

附加信息:在FILE_COMMON 意义上要打开的文件的位置 - 不影响错误的发生

 
Andrey Barinov:

这就是代码优化。

如果在metaeditor.ini的[Experts]字段中写上OPTIMIZE=0,那么编译速度就会像4中那样。我有一些项目在20秒内完成编译,有些则进入了无限的优化循环:)

哇,谢谢你,伙计你之前在哪里!?)而我们在这里苦苦挣扎......。最奇怪的是,开发商对这个选项只字未提
 
Alexey Navoykov:
哇,谢谢你,伙计!你以前去哪里了!?)而在这里,我们正在遭受......。奇怪的是,开发人员对这个选项保持沉默。

并非无声无息。论坛上有一个 18页的主题 ,其中刚刚描述了这个选项。

顺便说一下,在为调试而编译时,不启用优化。

 
Andrey Barinov:

这就是代码优化。

如果在metaeditor.ini的[Experts]字段中写上OPTIMIZE=0,那么编译速度就会像4中那样。我有一些项目在20秒内完成编译,而有些则进入了无限的优化循环:)

正是如此!也就是说,我前段时间自己把它设置为1,只是忘记了。))

阿列克谢-纳沃伊科夫
...而我们仍然在这里挣扎......。奇怪的是,开发人员对这个选项只字未提

该主题得到了详细的讨论:测试x64平台的新MQL5编译器--速度提升2至10倍!>>>

>> 我把它忘了。)

我一开始甚至没有这个优化工作。也就是说,在某些情况下编译会失败。但后来我设法找到了原因。后来它被修复了,我在一个终端中把参数设置为1,就把它忘了。昨天我坐在那里想,为什么在一个MT5编辑器中,编译速度比另一个MT5编辑器快得多。

//---

现在,如果我把它设置为0,编译的速度就会快25倍。

0 error(s), 0 warning(s), compile time: 668 msec                1       1
 
Anatoli Kazharski:

当然,我在MetaTrader 5 中最复杂的项目也需要很长的时间来编译。它甚至需要长达11 秒的时间。完全相同的版本,但在MetaTrader 4 中可以快达25 倍。

在MT5中,编译器更加先进,优化了代码,使其运行速度比MT5快10倍。我们以前写过关于它的文章,也解释过它。

MQL5编译器必须创建两份代码以实现兼容--用于旧的32位版本(没有完全优化)和用于64位的最大优化版本。MQL5的全部威力只在64位中显现。

 
Renat Fatkhullin:

MT5的编译器更先进,它优化了代码,使其运行速度比MT5快10倍。

此外,编译器还必须创建两份代码副本以实现兼容--用于旧的32位版本(没有完全优化)和64位的最大优化版本。MQL5的全部力量只在64位中显现。

谢谢你。我已经刷新了我对讨论这一切的主题的记忆。

在开发的时候,我会把它设置为0,因为我经常要进行编译,等待10 秒钟是非常令人厌烦的。而在最终汇编前的最终产品,我将把1

 
Renat Fatkhullin:

在MT5中,编译器更加先进,优化了代码,使其运行速度比MT5快10倍。我们以前曾写过并解释过这一点。

MQL5编译器必须创建两份代码以实现兼容--用于旧的32位版本(没有完全优化)和用于64位的最大优化版本。MQL5的全部威力只在64位中显现。

如果在MetaEditor运行时改变OPTIMIZE 参数,到底需不需要重新加载以接受设置?
 
coderex:
如果在MetaEditor运行时改变OPTIMIZE 参数,是否需要重新加载以接受设置?
自己尝试一下会更快。我刚刚进行了测试。没有必要重新启动编辑器。