任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 9

 
gyfto:

你可以写if((b-a)*(c-a)*(d-a)>0),但不一定快。逻辑和是二进制乘法,它只是同一表达式的另一种符号,唯一的区别是变量类型的大小。a>b是一个布尔变量,4个字节,b-a,如果它们是双倍的,差值将是双倍的(8个字节),这个乘法至少是2倍的。


无价的建议。

让我解释一下。你可以把你的表达式改写为if(((a>b)*(a>c)*(a>d)==1),因为括号里的表达式取值为0或1(而它们又在预编译器的define中被定义为false和true)。

谢谢--我想这将更快地发挥作用
 

各位,请指教。

在策略测试模式下,我无法改变优化属性中的数字。

最低余额200

最高利润10000

等。

问题是什么?

 

你能告诉我哪些值可以返回 initstartdeinit,它们是什么意思?

我试图在论坛中搜索,但没有找到。手册》中没有这方面的信息。很可能是机密信息。:)))(情感文字删除... )

正如我所猜测的--"0"--一切都很顺利......但是,由于它们的类型是整数,显然可以有超过2个值......。

 
Chiripaha:

你能告诉我哪些值可以返回 initstartdeinit,它们是什么意思?

我试图在论坛中搜索,但没有找到。手册》中没有这方面的信息。很可能是机密信息。:)))(情感文字删除... )

正如我所猜测的--"0"--一切都很顺利......但是,由于它们的类型是interger,显然可以有超过2个值......

这个问题最近已经讨论过了。参考资料。

在MQL4中,有3个预定义名称的函数。

init() - 模块初始化时调用的函数。如果缺少它,在初始化过程中就不会调用任何函数。

start() - 主函数。它是在收到下一个tick后在Expert Advisors调用的。对于自定义指标,在指标连接到图表后的重新计算过程中,当客户终端被打开时(如果指标连接到图表上),以及在下一个tick出现后,都会调用该指标。在脚本中,它在附加到图表和初始化后立即执行。如果模块中没有start()函数,这个模块(专家顾问、脚本或自定义指标)就不能被启动。

deinit() - 模块去初始化时调用的函数。如果它不存在,在去初始化过程中就不会调用任何函数。

预定义函数可以有参数。然而,当这些函数被客户终端调用时,将不会从外部传递任何参数,而是使用默认值。
根据一般规则,start()、init()和deinit()函数可以从模块的任何地方调用,其他函数也是如此。

从init()函数中调用start()或交易是不可取的,因为在模块初始化的时候,图表数据、市场价格等可能还没有准备好。init()和deinit()函数应该尽快终止它们的工作,并且在任何情况下都不能在start()函数被调用之前,试图开始全面运行。

对于系统调用,返回值并不重要。
 

好吧,那我就试着澄清一下这个问题。

例如,我想在初始化阶段检查一些参数,并根据结果:是否传递到启动阶段。

如果我对你的评论理解正确,Vadim,那么初始化结果将不重要(在这种情况下),函数Start将被启动?

 

那么你需要从一开始就调用init。

你为什么要费尽心思?全局变量 还没有被取消...

 
Chiripaha:

好吧,那我就试着澄清一下这个问题。

例如,我想在初始化阶段检查一些参数,并根据结果:是否传递到启动阶段。

如果我对你的评论理解正确的话,Vadim,初始化的结果就不重要了(在这种情况下),Start函数将被启动?

鲁斯塔姆回答说。

常见问题

那么你必须自己从头开始调用init。

为什么会出现这样的复杂情况?还没有人取消全局变量...

你声明全局变量并根据需要初始化它们。同一模块中的所有函数都可以看到全局变量
 
Zhunko:

鲁斯塔姆回答说。

你在全局范围内声明这些变量,并根据需要初始化它们。一个模块中的所有函数都可以看到全局变量。

是的,除非是限制访问 程序的检查,比如说。
 
FAQ:

那么你需要从一开始就调用init。

你为什么要费尽心思?全局变量还没有被取消...


用旗子来检查不是更容易吗?当然...
 
hoz:

用旗子来检查不是更容易吗?当然是全球...

不,这并不容易。因为如果有一个负标志(或一个全局变量),仍然需要运行检查。标志和全局变量都只在正面情况下起作用。而有些功能在开始时仍然需要(尽管,这里的情况不同)。

无论你怎么看,反正都要开始:要么通过重做 "inite",这同样令人讨厌,要么通过重做所需的功能。