测试x64平台的新MQL5编译器--计算速度提高2至10倍 - 页 14 1...78910111213141516171819202122 新评论 xfo 2015.05.08 00:01 #131 我今天想在我的专家顾问上测试加速计算,以期待超级速度(我甚至使用了更快的CPU),但...由于某些原因,优化后的专家顾问在测试器中的运行速度要慢三倍。这事从未发生在你身上吗?一旦我定位并重现了这个问题,我就会公布代码。那里没有系统调用,只有对一堆数组的操作和基本算术操作。另外,这里有几个要求。1.我们可以增加从编辑器中启动脚本而不进行调试的可能性,也就是说,就像从导航仪中完成一样。这种启动在任何开发环境中都是存在的。我想建议按Ctrl + F5,就像在sys中一样,但这个组合已经被你拿走了:)2.增加了从脚本中调用wind的控制台stdout的功能,以避免每次都切换到终端来查看脚本的结果。虽然根据我的理解,你可以尝试用WinAPI来调用它。3.至少要增加一些遗传优化设置。例如,组合的数量可以是1e35,而10k次并不总是足够的(优化器在10k次之后甚至不产生新的次数),你明白20-30k次就足够了,但你无法调整它。另一方面,当你固定一些参数,并留下一些参数进行更多的微调和研究分布......因此,当组合的数量较少时,例如50k,GA的优化器只提供2k的运行--这对于这个特定的任务也是不够的--以更好地研究函数在这些参数上的行为。也就是说,把所有的50K都看一遍是很愚蠢的,而GA只产生了2K的运行,并没有给出一个足够的画面。我希望你明白我在说什么。 Andrei01 2015.05.08 05:59 #132 Renat Fatkhullin:改进是肯定会有的。是否有人已经在策略 测试器中测试了对历史的调试? 我想很多人都喜欢测试,但困难和现实是,你通常在你写代码和打算交易的地方测试。提供MT5的经纪商非常少,这将延缓交易者对所有新功能的测试,并不可避免地延缓MT5的发展。因此,也许寻找一些非微不足道的解决方案来解决这个问题并提高使用MT5的积极性是有意义的。 Georgiy Merts 2015.05.08 13:45 #133 Renat Fatkhullin:改进是肯定会有的。是否有人已经在策略 测试器中测试了对历史的调试? 我做错了什么。我的视频展示台打开时很简单,而且照常工作。断点就在OnInit()的第一条语句上--但它没有起作用。 sigma7i 2015.05.08 18:09 #134 Renat Fatkhullin:改进是肯定会有的。是否有人已经在策略 测试器中测试了对历史的调试?如果能够从上下文菜单中选择 "查找使用",那也是很好的。我知道这有点离题,但我不需要写任何修改,但对开发者来说,有这样的东西是很好的。我已经在新的编译器上检查了移动平均线、MACD样本,但我没有发现任何差异。我将在我的EA上进行尝试。 xfo 2015.05.11 20:57 #135 我还没有完全调试和发现这个错误(在非常不同的方面),但到目前为止,我发现Optimize=1有以下问题。让我马上告诉你,我的专家顾问有大约100个输入参数,而且它经常与数组一起工作。此外,它不做交易,只进行计算。我将描述我的行动顺序。1.我启动终端,在测试器中选择 "优化=禁用",并给出一组主输入参数。测试仪给出了正确的结果。2.我选择 "优化=快速(遗传算法)",启动它--测试器甚至没有生成第一步。代理人(处理者)没有反应。起初我以为可能是参数设置不好,出现了一些计算错误,测试仪就死了。3.我再次选择 "优化=禁用",并再次给出参考集。现在测试器根本不显示任何结果。4.我在编辑器中打开EA代码,按F5键生成一个非优化的代码。我再次使用参考集在测试器中运行它--瞧,有一个结果了。嗯,由于优化,专家顾问内部出现了一些小故障。我添加了一个函数,将专家顾问的输入参数 记录到一个文件中。因此,在第2步(优化正在运行,测试员的步骤几乎没有产生),一些参数的随机值被弹出,而这些参数根本没有提供,因为该参数要么是不可改变的,要么是超出了设定范围。例如,我有一个参数设置为80,它是不变的。在日志中,它被设置为0.01355835795402527(?)另一个被设置为0,记录为4.940656458412465e-324;两个参数都是双倍的。但后来我发现,int也有完全不合适的值。第二,我剪掉了 "不必要的 "EA代码,只留下那段同样导致错误的代码。但结果仍然是相当多。另外,日志功能输出的是所有参数的值。然而,当我删除大部分参数时(它们变得小于64或80),测试器并没有死。也就是说,我还发现错误和我的记录功能之间有一种奇怪的联系。当它被注释掉时(即所有的参数在代码中都没有使用),测试者就死了。当它记录时,测试者就会死亡。非常奇怪。而第三。我注意到,并行计算并没有导致整体运行速度的线性增加。例如,我附上的文件:一个脚本和一个具有相同代码的专家顾问。这是一个真实的代码片段,是从我的专家顾问中剪下来的,但数组被重新命名。当Optimize=1时,我的脚本在156毫秒内运行,也就是说,每秒钟可能运行6次。(如果不进行优化,则需要3倍的时间)。我有8个线程,也就是说,理论上每秒可以运行48次。当在测试器中运行专家顾问时(做慢速优化,启用虚拟参数,例如,2000次运行),我只得到每秒4次多一点的运行,即甚至比单核上的运行速度还慢!这是不可能的。尽管在任务管理器中诚实地挂着8个进程。为什么会这样呢?多个进程阻止了对内存的访问?数组初始化时间长?(无可否认,那里的数组并不大)。当我们在测试器中运行一个单一的测试时,打印:156毫秒。也就是说,专家顾问的一切似乎都很正常。顺便问一下,MQL中会不会有指针?:)因为我不得不做数组-拷贝。 附加的文件: Opt_speed_expert.mq5 3 kb Opt_speed_script.mq5 3 kb xfo 2015.05.12 18:23 #136 xfo:由于某些原因,带优化的专家在测试器中的工作速度要慢3倍。现在我明白为什么它越来越慢了--只有一个代理(随机)工作,其他的都失败了,所以不断地每隔几秒钟就有一次尝试。从测试人员的日志中看不出什么问题。按照我的理解,如果最近的代理也失败了,那么就会发生我前面写的情况:测试员的步骤根本就没有生成。Build 1117并没有解决上述所有问题(包括结构阵列)。 Georgiy Merts 2015.05.13 03:01 #137 今天更新到1117,但在历史数据上调试--仍然不走。 我拿着ExpertMACD.mt5,在Init函数的入口处放了一个断点,开始调试历史数据(按下按钮),编辑器窗口关闭,策略测试器设置 打开。我设置了时间段(对于2015年,日记,所有的刻度线),可视化--复选框打开,我按下开始按钮,可视化开始。断点没有起作用。 我做错了什么? unreal 2015.05.13 07:11 #138 George Merts:今天更新到1117,但对历史数据进行调试--仍然没有进行。 我使用ExpertMACD.mt5,在Init函数的入口处设置一个断点,开始对历史数据进行调试(按下按钮),编辑器窗口关闭,策略测试器设置 打开。我设置了时间段(对于2015年,日记,所有的刻度线),可视化--复选框打开,我按下开始按钮,可视化开始。断点没有起作用。 我做错了什么?我需要在MetaQuotes-Demo 上开一个模拟账户,然后我在moex模拟账户上的MACD Sample.mq5,USDRUB_TOM符号不起作用(先是启动,然后在几步后停止),简单的回测也不起作用。但是在模拟账户上的Moving Average.mq5在USDRUB_TOM上运行良好(简单回测也是如此)。在demoforex模拟账户上,欧元兑美元符号工作正常(简单回测也是如此)MACD Sample.mq5和Moving Average.mq5在demoforex账户上录制了MACD Sample.mq5 EURUSD符号的调试视频。(日常工作也很好) 附加的文件: capture-mt5-1.zip 5457 kb Eduard Vavrin 2015.05.13 11:04 #139 xfo:我还没有完全调试和发现这个错误(在非常不同的方面),但到目前为止,我发现Optimize=1有以下问题。让我马上告诉你,我的专家顾问有大约100个输入参数,而且它经常与数组一起工作。另外,它不做交易,只进行计算。...............................................顺便问一下,MQL中会不会有指针?:)因为我不得不做数组-拷贝。你好,我想说得更具体一些。1.你的专家顾问已经进行了计算,但还没有进行交易。专家顾问显示什么以及如何显示?在策略测试器中 运行专家顾问时,你对它有什么期望?在测试过程中,你希望通过优化获得哪些数据?在测试所附专家顾问时,我们没有发现任何错误。你所描述的错误是否与此有关?2.一步一步的做什么,你期望什么,请附上你使用的代码。3.你能附上有优化和无优化的测试日志吗?4.你的终端版本,操作系统? xfo 2015.05.13 12:23 #140 Eduard Vavrin,所附文件与所述错误无关。让我试着准备一下导致错误的代码,并把它发给你。这只是需要时间,到目前为止,这段代码包含了太多的专家顾问的来源。关于我所附的文件:它说所附的EA单次运行需要156毫秒,也就是1/6秒。我们可以假设,在8个线程上,我们将得到每秒48次运行。实际上,在8个线程上多次运行的速度(有一个假的参数,慢速优化模式,用于此)只有每秒4-5次运行。问题是:为什么速度在下降?在代理标签上,我可以看到所有的线程都在运行,每个线程的运行时间都超过了1秒。专家顾问返回的rand()只是一个刻度,看看它是否起作用。 1...78910111213141516171819202122 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我今天想在我的专家顾问上测试加速计算,以期待超级速度(我甚至使用了更快的CPU),但...由于某些原因,优化后的专家顾问在测试器中的运行速度要慢三倍。这事从未发生在你身上吗?一旦我定位并重现了这个问题,我就会公布代码。那里没有系统调用,只有对一堆数组的操作和基本算术操作。
另外,这里有几个要求。
1.我们可以增加从编辑器中启动脚本而不进行调试的可能性,也就是说,就像从导航仪中完成一样。这种启动在任何开发环境中都是存在的。我想建议按Ctrl + F5,就像在sys中一样,但这个组合已经被你拿走了:)
2.增加了从脚本中调用wind的控制台stdout的功能,以避免每次都切换到终端来查看脚本的结果。虽然根据我的理解,你可以尝试用WinAPI来调用它。
3.至少要增加一些遗传优化设置。例如,组合的数量可以是1e35,而10k次并不总是足够的(优化器在10k次之后甚至不产生新的次数),你明白20-30k次就足够了,但你无法调整它。另一方面,当你固定一些参数,并留下一些参数进行更多的微调和研究分布......因此,当组合的数量较少时,例如50k,GA的优化器只提供2k的运行--这对于这个特定的任务也是不够的--以更好地研究函数在这些参数上的行为。也就是说,把所有的50K都看一遍是很愚蠢的,而GA只产生了2K的运行,并没有给出一个足够的画面。我希望你明白我在说什么。
改进是肯定会有的。
是否有人已经在策略 测试器中测试了对历史的调试?
改进是肯定会有的。
是否有人已经在策略 测试器中测试了对历史的调试?
改进是肯定会有的。
是否有人已经在策略 测试器中测试了对历史的调试?
如果能够从上下文菜单中选择 "查找使用",那也是很好的。
我知道这有点离题,但我不需要写任何修改,但对开发者来说,有这样的东西是很好的。
我已经在新的编译器上检查了移动平均线、MACD样本,但我没有发现任何差异。我将在我的EA上进行尝试。
我还没有完全调试和发现这个错误(在非常不同的方面),但到目前为止,我发现Optimize=1有以下问题。让我马上告诉你,我的专家顾问有大约100个输入参数,而且它经常与数组一起工作。此外,它不做交易,只进行计算。
我将描述我的行动顺序。
1.我启动终端,在测试器中选择 "优化=禁用",并给出一组主输入参数。测试仪给出了正确的结果。
2.我选择 "优化=快速(遗传算法)",启动它--测试器甚至没有生成第一步。代理人(处理者)没有反应。起初我以为可能是参数设置不好,出现了一些计算错误,测试仪就死了。
3.我再次选择 "优化=禁用",并再次给出参考集。现在测试器根本不显示任何结果。
4.我在编辑器中打开EA代码,按F5键生成一个非优化的代码。我再次使用参考集在测试器中运行它--瞧,有一个结果了。嗯,由于优化,专家顾问内部出现了一些小故障。
我添加了一个函数,将专家顾问的输入参数 记录到一个文件中。因此,在第2步(优化正在运行,测试员的步骤几乎没有产生),一些参数的随机值被弹出,而这些参数根本没有提供,因为该参数要么是不可改变的,要么是超出了设定范围。例如,我有一个参数设置为80,它是不变的。在日志中,它被设置为0.01355835795402527(?)另一个被设置为0,记录为4.940656458412465e-324;两个参数都是双倍的。但后来我发现,int也有完全不合适的值。
第二,我剪掉了 "不必要的 "EA代码,只留下那段同样导致错误的代码。但结果仍然是相当多。另外,日志功能输出的是所有参数的值。然而,当我删除大部分参数时(它们变得小于64或80),测试器并没有死。也就是说,我还发现错误和我的记录功能之间有一种奇怪的联系。当它被注释掉时(即所有的参数在代码中都没有使用),测试者就死了。当它记录时,测试者就会死亡。非常奇怪。
而第三。我注意到,并行计算并没有导致整体运行速度的线性增加。例如,我附上的文件:一个脚本和一个具有相同代码的专家顾问。这是一个真实的代码片段,是从我的专家顾问中剪下来的,但数组被重新命名。当Optimize=1时,我的脚本在156毫秒内运行,也就是说,每秒钟可能运行6次。(如果不进行优化,则需要3倍的时间)。我有8个线程,也就是说,理论上每秒可以运行48次。当在测试器中运行专家顾问时(做慢速优化,启用虚拟参数,例如,2000次运行),我只得到每秒4次多一点的运行,即甚至比单核上的运行速度还慢!这是不可能的。尽管在任务管理器中诚实地挂着8个进程。为什么会这样呢?多个进程阻止了对内存的访问?数组初始化时间长?(无可否认,那里的数组并不大)。
当我们在测试器中运行一个单一的测试时,打印:156毫秒。也就是说,专家顾问的一切似乎都很正常。
顺便问一下,MQL中会不会有指针?:)因为我不得不做数组-拷贝。
由于某些原因,带优化的专家在测试器中的工作速度要慢3倍。
现在我明白为什么它越来越慢了--只有一个代理(随机)工作,其他的都失败了,所以不断地每隔几秒钟就有一次尝试。从测试人员的日志中看不出什么问题。按照我的理解,如果最近的代理也失败了,那么就会发生我前面写的情况:测试员的步骤根本就没有生成。
Build 1117并没有解决上述所有问题(包括结构阵列)。
今天更新到1117,但在历史数据上调试--仍然不走。
我拿着ExpertMACD.mt5,在Init函数的入口处放了一个断点,开始调试历史数据(按下按钮),编辑器窗口关闭,策略测试器设置 打开。我设置了时间段(对于2015年,日记,所有的刻度线),可视化--复选框打开,我按下开始按钮,可视化开始。断点没有起作用。
我做错了什么?
今天更新到1117,但对历史数据进行调试--仍然没有进行。
我使用ExpertMACD.mt5,在Init函数的入口处设置一个断点,开始对历史数据进行调试(按下按钮),编辑器窗口关闭,策略测试器设置 打开。我设置了时间段(对于2015年,日记,所有的刻度线),可视化--复选框打开,我按下开始按钮,可视化开始。断点没有起作用。
我做错了什么?
我需要在MetaQuotes-Demo 上开一个模拟账户,然后
我在moex模拟账户上的MACD Sample.mq5,USDRUB_TOM符号不起作用(先是启动,然后在几步后停止),简单的回测也不起作用。
但是在模拟账户上的Moving Average.mq5在USDRUB_TOM上运行良好(简单回测也是如此)。
在demoforex模拟账户上,欧元兑美元符号工作正常(简单回测也是如此)MACD Sample.mq5和Moving Average.mq5
在demoforex账户上录制了MACD Sample.mq5 EURUSD符号的调试视频。(日常工作也很好)
我还没有完全调试和发现这个错误(在非常不同的方面),但到目前为止,我发现Optimize=1有以下问题。让我马上告诉你,我的专家顾问有大约100个输入参数,而且它经常与数组一起工作。另外,它不做交易,只进行计算。
...............................................
顺便问一下,MQL中会不会有指针?:)因为我不得不做数组-拷贝。
你好,我想说得更具体一些。
1.你的专家顾问已经进行了计算,但还没有进行交易。专家顾问显示什么以及如何显示?在策略测试器中 运行专家顾问时,你对它有什么期望?在测试过程中,你希望通过优化获得哪些数据?在测试所附专家顾问时,我们没有发现任何错误。你所描述的错误是否与此有关?
2.一步一步的做什么,你期望什么,请附上你使用的代码。
3.你能附上有优化和无优化的测试日志吗?
4.你的终端版本,操作系统?
Eduard Vavrin,所附文件与所述错误无关。让我试着准备一下导致错误的代码,并把它发给你。这只是需要时间,到目前为止,这段代码包含了太多的专家顾问的来源。
关于我所附的文件:它说所附的EA单次运行需要156毫秒,也就是1/6秒。我们可以假设,在8个线程上,我们将得到每秒48次运行。实际上,在8个线程上多次运行的速度(有一个假的参数,慢速优化模式,用于此)只有每秒4-5次运行。问题是:为什么速度在下降?在代理标签上,我可以看到所有的线程都在运行,每个线程的运行时间都超过了1秒。专家顾问返回的rand()只是一个刻度,看看它是否起作用。