[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 267

 
drknn:


1.好的。声明了Int start()。我一直都是以零分回报。我在代码中也看到了return(-1),甚至return(-2)的命令。选择这个代码的正确方法是什么?

2.因此,很自然的问题出现了,是否有可能声明EA/指示器/脚本的start()不是int()类型,而是任何其他类型,然后向终端返回什么?换句话说,终端对return()返回的值做了什么?

1.你如何决定一个正常的功能应该返回什么?

2.你可以有任何类型,就像一个正常的函数。终端对返回的值不做任何处理。它无视它们。

特殊功能

 
Zhunko:

1.你如何决定一个正常的功能应该回归什么?

2.你可以有任何类型,就像一个正常的函数。终端对返回的值不做任何处理。它无视它们。


1.为了决定一个普通函数应该返回什么,我需要知道为什么主代码需要这样一个值。例如,如果我想在有信号时做出开立买单的决定,我将写一个函数,返回已经开立的买单数量。根据有多少,代码将按照代码中嵌入的逻辑做出决定。我不知道返回代码中包含什么逻辑。今天我翻阅了一篇关于创建信号灯的文章,我看到了一个返回代码(-2)。很惊讶,在这里问了一个问题。这就是全部。(https://www.mql5.com/ru/articles/1412- 这里的文章)。

2.终端忽略了返回的值。是这样吗?如果是这样,那么又出现了一个合理的问题,为什么在创建一个EA/指标/脚本时,开发者正好把int放入模板,因为把void放在那里会更合理--那么终端就不必忽略任何东西--我们会获得1战术的处理器时间?也许在从int init()、int deinit()和int start()函数返回的过程中有一些逻辑?我想罗氏已经在某个地方向某人解释过了--他记得有关于何时返回零和何时返回(-1)的描述。我所寻找的正是这种解释。太糟糕了,我找不到它...

P.S.

文章的作者为了自己的目的使用了return(-2)。但事实是,有时start()函数结束时,代码会返回一个不同于零的值。而且不仅仅是一个人在做这件事。这正是我们想要了解的这种逻辑。

 

在文本中看起来是有的。

预定义函数可以有参数。然而,当这些函数被客户终端调用时,将不会从外部传递参数,而是使用默认值。

这是关于进入函数的参数,而不是由它返回的参数。

 
谢谢你的答复
drknn:
这是一个订单计数器。好吧,可能是这样的,例如,你想在代码中知道市场上是否有某一货币对的买单,并有某一神奇数字,例如。如果有,例如,另一个买入订单不能被打开。所以需要订单计数器来做决定。
 
paladin80:

我在开始后就在我的EA中写了这个。

试试吧,你可能会发现其中一些内容很有用。

谢谢你,我发现了我的错误。当我的EA因为文章(上面的链接)中给出的原因而被卡住时,我关闭了它并重新开始,但忘了将订单主站从123改为124,两个不同方向的EA得到了相同的标记并开始竞争,看谁开单更快。如果第一个订单先被打开,那就不一样了,比如说卖出,反之亦然。当我改变了第二个更新的EA的魔法后,它们都开始正常工作。如果错误再次发生,我将采纳你的建议。谢谢你的回答。
 

如何理解这些线条。

退货订单量

if(buys>0) return(buys)。

否则返回(-sells)。

} ?

 

写一个脚本。

int start(){
  Print("Попытка ретурна 136");
  return(136);
}

把它扔在图表上,看日志。

2012.07.20 12:04:11 111 NZDUSD,M15: removed
2012.07.20 12:04:11 111 NZDUSD,M15: uninit reason 0
2012.07.20 12:04:11 111 NZDUSD,M15: Попытка ретурна 136
2012.07.20 12:04:11 111 NZDUSD,M15: loaded successfully

(这里111是脚本的名称)。我们看到一行 "uninit reason 0"--显然,终端在等待0!"。

用(-1)尝试同样的方法。

int start(){
  Print("Попытка ретурна -1");
  return(-1);
}

其结果是一样的。

2012.07.20 12:08:19 111 NZDUSD,M15: 删除
2012.07.20 12:08:19 111 NZDUSD,M15: uninit reason 0
2012.07.20 12:08:19 111 NZDUSD,M15:试图返回-1

2012.07.20 12:08:19 111 NZDUSD,M15:加载成功

终端似乎关心是否返回零。

P.S.

总的来说,在网上看到了这个答案。

返回0 - 程序已经完成工作,没有错误
返回1 - 或更高的数字,程序已经完成了工作,出现了错误,并返回错误代码,以便进一步处理。

在任何操作系统中,任何程序都会返回一个错误代码。

唯一的麻烦是,我们的返回并不是将代码返回给操作系统,而是返回给终端。这就留下了一个问题。

 
drknn:

写一个脚本。

把它扔在图表上,看日志。

(这里111是脚本的名称)。我们看到一行 "uninit reason 0"--显然,终端在等待0!"。

用(-1)尝试同样的方法。

其结果是一样的。

显然,终端关心的是是否返回零。


uninit原因是专家顾问终止的原因代码。

https://docs.mql4.com/ru/constants/uninit

 
你稍微有点混淆了,UNINIT REASON与相对于标准函数的回报没有关系。编写一个EA,从 "开始 "调用 "init",返回结果不同,看看。其实https://docs.mql4.com/ru/basis/functions/special,医生说得很完美。只要再仔细 重读一遍。
 
drknn:


1.要决定一个正常的函数到底应该返回什么,我应该知道为什么主代码需要这样一个值。例如,如果我想在有信号时做出开立买单的决定,我将写一个函数,返回已经开立的买单数量。根据数量的多少,代码将按照代码中嵌入的逻辑做出决定。我不知道返回代码中包含什么逻辑。今天我翻阅了一篇关于创建信号灯的文章,我看到了一个返回代码(-2)。很惊讶,在这里问了一个问题。这就是全部。(https://www.mql5.com/ru/articles/1412- 这里的文章)。

2. 终端忽略了返回值。这是否准确?如果是这样,那么又出现了一个合理的问题,为什么在创建EA/指标/脚本的时候,开发者要在模板中准确地放入int,因为把void放在那里会更符合逻辑--那么终端将不必忽略任何东西--那么我们将获得1战术的处理器时间?也许在从int init()、int deinit()和int start()函数返回的过程中有一些逻辑?我想罗氏已经在某个地方向某人解释过了--他记得有关于何时返回零和何时返回(-1)的描述。我所寻找的正是这种解释。太糟糕了,我找不到它...

P.S.

文章的作者为了自己的目的使用了return(-2)。但事实是,有时start()函数结束时,代码会返回一个不同于零的值。而且不仅仅是一个人在做这件事。这正是我想了解的这种逻辑。

1.我不能对其进行任何补充。无论你想要什么,都要归还。

2.终端会忽略它,你的代码也不会忽略它,如果它是这样构建的。该系统调用忽略了参数和返回值。这是很明显的。在这种情况下,它回到了哪里?

我们只能猜测这个图案的产生。开发者一定是从默认的INT开始的。