错误、漏洞、问题 - 页 1962 1...195519561957195819591960196119621963196419651966196719681969...3184 新评论 fxsaber 2017.08.16 02:01 #19611 Andrey Khatimlianskii:这有什么帮助?优化工作已经完成,我们已经写下了所有要搜索的参数的数值范围。然后我们运行一个测试,读取参数列表,并显示:参数=值。在这种情况下,我们不知道这个值,因为我们不能用名字来指代这个直观变量。你让输入的参数变成bool Optim。在OnInit中,如果Optim == true,你将返回INIT_FAILED。同时在OnTesterPass中通过FrameInputs和ParameterGetRange(或在全局类对象的析构器中),你写下实际的优化SET。然后你把Optim = false。再取一个参数sinput int Range,通过ParameterSetRange将其设置为从0到1。在OnTesterInit中读取SET文件,在ParameterSetRange中设置文件中的所有参数值。当Range == 0时,你在OnInit中返回INIT_FAILED。就这样吧!你有想象中的优化,而不是单一的优化,这也比单一的优化快....。加上读/写输入参数。 ruslan 2017.08.16 07:37 #19612 偏离主题的问题,但我要问你,是否有可能在MQL5 手册中补充更多更清晰的算法实施实例? Andrey Khatimlianskii 2017.08.16 11:55 #19613 fxsaber:使输入的参数为bool Optim。在OnInit中,如果Optim == true,你将返回INIT_FAILED。同时在OnTesterPass中通过FrameInputs和ParameterGetRange(或在全局类对象的析构器中),你实际上是在写SET-文件优化。然后你把Optim = false。再取一个参数sinput int Range,通过ParameterSetRange将其设置为从0到1。在OnTesterInit中读取SET文件,在ParameterSetRange中设置文件中的所有参数值。当Range == 0时,你在OnInit中返回INIT_FAILED。就这样吧!你有想象中的优化,而不是单一的优化,这也比单一的优化快....。加上读/写输入参数。谢谢你的详细算法。 fxsaber 2017.08.16 12:46 #19614 1643年的编译时间'TesterBenchmark_Example.mq5' TesterBenchmark_Example.mq5 1 1 'TesterBenchmark.mqh' TesterBenchmark.mqh 1 1 0 error(s), 0 warning(s), compile time: 3113 msec 1 1编译时间为1648年'TesterBenchmark_Example.mq5' TesterBenchmark_Example.mq5 1 1 'TesterBenchmark.mqh' TesterBenchmark.mqh 1 1 0 error(s), 0 warning(s), compile time: 219 msec 1 1有些东西被调整了! A100 2017.08.16 12:47 #19615 编译错误typedef void (*fn)( int ); struct A { void f() { return ; } //(*) static void f( int ) {} }; void g( fn ) {} void OnStart() { g( A::f ); //error: 'f' - cannot resolve function address } 而如果你把第(*)行替换为 int f() { return 0; } //(*) 那么就可以了。有什么区别?它看起来像https://www.mql5.com/ru/forum/1111/page1977#comment_5595772, 但有一个不同的错误代码 Ошибки, баги, вопросы 2017.08.11www.mql5.com Форум алго-трейдеров MQL5 A100 2017.08.16 13:06 #19616 编译时出错template<typename T> void g( T ) {} void f() {} void OnStart() { g( f ); //error: 'g' - cannot to apply function template } 否则。 template<typename T> void g( T ) {} void f() {} typedef void (*fn)(); void OnStart() { fn ff = f; g( ff ); //нормально } 这很好。这有什么区别呢? fxsaber 2017.08.16 13:19 #19617 A100:编译时出错但这种方式。 通常情况下。有什么区别?差异是巨大的。当g(f)被调用时,编译器不知道f是什么类型,因为只有模板被规定。如果你的模板过载,就没有问题了typedef void (*fn)(); template<typename T> void g( T Value ) { Print(typename(Value)); } void f() {} void g( fn Value ) { Print(typename(Value)); } void OnStart() { g( f ); // void(*fn)() } Vitaly Muzichenko 2017.08.16 13:19 #19618 fxsaber: 编译时间为1643年。编译时间为1648年这是个很酷的调整!我的和原来一样,汇编的速度不快! fxsaber 2017.08.16 13:24 #19619 Vitaly Muzichenko:我仍然保留着它,但编译工作没有加速。也许没有使用过去在TesterBenchmark.mqh中放慢的东西 A100 2017.08.16 13:24 #19620 fxsaber:差异是巨大的。当g(f)被调用时,编译器不知道f是什么类型,因为只有模板被规定。如果你的模板过载,就没有问题了 如果存在巨大的差异,那么为什么C++在两种变体中都能很好地编译? 1...195519561957195819591960196119621963196419651966196719681969...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这有什么帮助?
优化工作已经完成,我们已经写下了所有要搜索的参数的数值范围。
然后我们运行一个测试,读取参数列表,并显示:参数=值。在这种情况下,我们不知道这个值,因为我们不能用名字来指代这个直观变量。
你让输入的参数变成bool Optim。在OnInit中,如果Optim == true,你将返回INIT_FAILED。同时在OnTesterPass中通过FrameInputs和ParameterGetRange(或在全局类对象的析构器中),你写下实际的优化SET。
然后你把Optim = false。再取一个参数sinput int Range,通过ParameterSetRange将其设置为从0到1。在OnTesterInit中读取SET文件,在ParameterSetRange中设置文件中的所有参数值。当Range == 0时,你在OnInit中返回INIT_FAILED。
就这样吧!你有想象中的优化,而不是单一的优化,这也比单一的优化快....。加上读/写输入参数。
偏离主题的问题,但我要问你,是否有可能在MQL5 手册中补充更多更清晰的算法实施实例?
使输入的参数为bool Optim。在OnInit中,如果Optim == true,你将返回INIT_FAILED。同时在OnTesterPass中通过FrameInputs和ParameterGetRange(或在全局类对象的析构器中),你实际上是在写SET-文件优化。
然后你把Optim = false。再取一个参数sinput int Range,通过ParameterSetRange将其设置为从0到1。在OnTesterInit中读取SET文件,在ParameterSetRange中设置文件中的所有参数值。当Range == 0时,你在OnInit中返回INIT_FAILED。
就这样吧!你有想象中的优化,而不是单一的优化,这也比单一的优化快....。加上读/写输入参数。
谢谢你的详细算法。
'TesterBenchmark_Example.mq5' TesterBenchmark_Example.mq5 1 1 'TesterBenchmark.mqh' TesterBenchmark.mqh 1 1 0 error(s), 0 warning(s), compile time: 3113 msec 1 1编译时间为1648年
'TesterBenchmark_Example.mq5' TesterBenchmark_Example.mq5 1 1 'TesterBenchmark.mqh' TesterBenchmark.mqh 1 1 0 error(s), 0 warning(s), compile time: 219 msec 1 1有些东西被调整了!
编译错误
而如果你把第(*)行替换为
那么就可以了。有什么区别?它看起来像https://www.mql5.com/ru/forum/1111/page1977#comment_5595772, 但有一个不同的错误代码
编译时出错
否则。
这很好。这有什么区别呢?编译时出错
但这种方式。
通常情况下。有什么区别?差异是巨大的。当g(f)被调用时,编译器不知道f是什么类型,因为只有模板被规定。如果你的模板过载,就没有问题了
编译时间为1643年。
编译时间为1648年
这是个很酷的调整!
我的和原来一样,汇编的速度不快!
我仍然保留着它,但编译工作没有加速。
也许没有使用过去在TesterBenchmark.mqh中放慢的东西
差异是巨大的。当g(f)被调用时,编译器不知道f是什么类型,因为只有模板被规定。如果你的模板过载,就没有问题了