新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 853

 
Priffekt:
下午好,我已经改变了所有的数值,但我对在EA设置 中禁用该功能本身的可能性感兴趣。

上午好。

当你粘贴一段代码时,使用</>按钮,它将更有可读性,我在上面给你写道:"用这种方式附加更好"。

在第8518帖中,我给你发了你自己的代码,我已经在其中加入了开关。你只需要将第一行与传入变量分开,第二行与OnTick分开。

 
Sergey Voytsekhovsky:

当然,我不太适合担任顾问的角色,但这个任务似乎并不困难。

请注意,我不会去研究你的代码本身,有很多争议,甚至对我来说也是如此(傻瓜),首先是你的函数是void类型的。 这种类型用来表示函数不返回值或者作为函数参数表示没有参数。而你在代码的结尾处有return(Exist)。

声明一个输入变量,把它写成你的函数的一个参数,如果你把'这个变量设置为False,就退出这个函数。

所强调的是绝对错误的。没有人禁止处理全局声明的变量。

int n = 0;

int OnInit()
 {
  f();
 }

void OnTick()
 {
  Print(n);
  f();
 }

void f()
 {
  n += n*3+12;
 }
 
Priffekt:
下午好,我已经改变了所有的数值,但我对在EA设置 中禁用该功能本身的可能性感兴趣。

如果你想在EA设置中能够禁用某个功能,你必须设置一个变量标志

input bool flag = true; // флаг отключения

void OnTick()
 {
  if(flag)
   f();
 }

void f()
 {
  // что-то выполняем
 }
只有当flag == true时,函数f()才会被执行。
 
Alexey Viktorov:

这绝对是不正确的。没有人禁止处理在全局层面声明的变量。

奇怪,这其实是MQL5手册中的一段话,全文看起来是这样的。

"无效类型和NULL常数。

语法void 类型是一个基本类型,与char、ucar、bool、short、ushort、int、uint、color、long、ulong、datetime、float、double和string类型并列。该类型用于表示函数不返回值,或者作为函数参数表示没有参数。

一个预定义的常量变量NULL 是无效类型的。它可以被分配给任何其他基本类型的变量,而不需要转换。也允许将基本类型的变量与NULL 进行比较"。


我引用这个片段是因为作者文中的函数是无效类型的,也就是说,它不应该返回任何东西,而是"。return(Exist);"。这可能是错误的,你不觉得吗?

所有关于数据处理的讨论甚至从未通过。我可能在什么地方错了,因为我只是在学习基础知识,但还是要感谢你的信息。

 
 
 
Alekseu Fedotov:

"...return(Exist);"

返回值,按函数计算

像这样

是的,你是对的,我没有注意到,并将这种回归归因于之前的(上面的哪个)功能。

 
Alexey Viktorov:

这不是它的目的...我只是没有仔细阅读强调的那条。

突出显示的viod意味着没有参数。但你不一定要写。没有参数,所以不要...

是的,你是对的,我也是不专心的。

 

向专家提问。

我想写一个EA,找到了一个脚本,在功能上适合我的需要。我想把它做成一个函数,我在准备环境,当然在标准库中 也有交叉点。我想了解这些条目之间的区别以及符号 "*"本身是否有任何秘密含义,是否有可能在未来的函数中把它们重命名为一个单一类型?

CTrade         trade;
CPositionInfo  apos;
CSymbolInfo    asymbol;


CTrade         *m_trade;
CSymbolInfo    *m_symbol;
CPositionInfo  *m_position_info; 

 

帮助,我如何找出趋势线的第一时间坐标

price = NormalizeDouble(ObjectGetValueByShift("trend",0),Digits);//ЦЕНА НА ТЕКУЩЕМ
原因: