来自一个 "傻瓜 "的问题 - 页 198

 
lazarev-d-m:

从这个条件中可以看出,它将在三种情况下执行。

1)测试器工作时

2)当测试器不工作时

3)视觉检测仪工作时

所以这个函数会一直工作,很可能你需要删除第二个条件,用&&连接第一个和第三个条件。

倒像是这样。

2或(1和2)。这就是我所需要的。不是在测试员,而是在视觉测试员模式。

我很抱歉,但我想我只是混淆了终端,测试了错误的代码。我的条件似乎是正常工作。

 
lazarev-d-m:

所以这个函数会一直工作,很可能你需要删除第二个条件,用&&连接第一个和第三个条件。

你的意思是,这个条件是充分的。

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

 
tor4en:

你的意思是,这样的条件是充分的。

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

是的,这也可以。谢谢你。
 
如果一个要优化的参数的范围取决于另一个优化的参数,如何影响它? 如果参数不合适,在oninit中调用 expertremove? 加快优化 的最佳方式是什么?
 
aharata:
如果要优化的参数的范围取决于另一个优化的参数,我如何影响它? 如果参数不合适,在oninit中调用 expertremove? 加快优化的最佳方法是什么?

看一下ParameterSetRangeParameterGetRange 函数。它们允许你在先前设置的非数字条件的基础上重写要枚举的参数。

例如,像这样。

//--- input parameters
sinput int   Param1=4;            // хитрый параметр
sinput int   Param2=30;           // хитрый параметр
sinput bool  Param3=false;        // хитрый параметр
                                  
sinput long  Counter=1;           // а вот этот параметр мы и будем оптимизировать (синтетический счетчик)


//--- на основе Param1, Param2 и Param3 высчитаем хитрое количество проходов счетчика Counter
ParameterSetRange("Counter",true,0,0,1,1+long(Param3 ? (Param1*Param2):(Param1*2));

注意使用sinput(静态输入)而不是input,这在GUI中给出了 "从 "和 "到 "这个参数的封锁变化。同样地,使用ParameterSetRange函数锁定的Counter参数也会随着计算极限的设置而被解锁。

你可以使用这种机制来制作非常复杂的输入条件,可以用来旋转合成计费计数器。不要忘记,参数设置功能只在OnTesterInit中工作。

 
非常感谢你,雷纳特。这正是我所需要的!)
 
关于使用命令行设置终端启动周期进行测试的问题。

目前情况:
1.我是用命令行启动终端来优化专家顾问的
2.终端启动、优化并将结果保存在xml文件中。
3.手动关闭终端
4.我编辑ini文件(改变例如测试期)。

5.继续讨论第1点。


问题:是否有人已经能够将这一过程自动化,包括从一个给定的列表中自动选择ini文件的参数,并关闭终端?请分享您关于如何做到这一点的想法。最好的选择是提供一个现成的解决方案,使上述过程自动化。当然,有人已经在我之前想到了这一点。

 
配置文件中有一条命令,在测试结束时自动关闭终端。在帮助文件中查看。
 
papaklass:

雷纳特,那就为这四个人做个仓库吧,拜托了。我已经把专家顾问下载到我的笔记本电脑上,但我忘记了其中的内容。现在我作为一个简单的:)程序员坐在这里,写函数而不是调试专家顾问。

我的U盘是我们值得信赖的储存器 :)

SZY,嗯,还有不时的邮件

 
sergeev:

闪存盘是我们值得信赖的储存器 :)

ZS,有时还有邮件。

闪存驱动器 - 我认为,它们经常会损坏。

我有一个外部硬盘,每天自动同步一次(大约300G的工作文件),如果我去某个地方,把它扔到我的包里,我就很高兴了。

他们说,ssd驱动器几乎是不可破坏的。但非常昂贵。