一个分讲习班,以填补FAQ(常问问题)。让我们帮助同志们! - 页 5

 

我答应了,我将从最简单的开始)

问题:MQL 算术运算 是否不正确?为什么一个数字除以另一个数字的结果是0?

答案是。

最有可能的是,你已经写了一个表达式,如

c = a/b;  // (1)

将变量a和b声明为整数。

int a,b;

在这种情况下,MQL编译器将 "斜线 "符号解释为 "整数除法 "操作。因此,即使在代码中出现(1)之前,ab 被赋予任何数值,甚至是非整数,变量c 仍将包含答案"b 符合数字a 的这么多整数倍"。这意味着,如果在计算(1)之前,a 小于b,那么结果将是零,不管变量c 的类型如何(在这个例子中可以是双数)。

所描述的错误往往是客户终端中 "不正确 "的程序行为的原因--在Expert Advisors的日志中出现"除以0"的信息,在终端窗口中不显示一个或多个指标行,等等。

问题的解决方案。

将变量声明中的数据类型纠正为与要使用的操作相对应的类型。

double a,b;
 
问题: 为什么3除以2等于1而不是1.5?

Alert(3/2);

答案: 这个表达式中的数字3和2是整数。一个整数在没有余数的情况下是不能被除的。为了得到1.5的结果,你必须指定除数是一个浮点数。

Alert(3.0/2);

* * *

问题: 为什么表达式的计算结果不正确?

  double price=1.0; // Цена
  double point=0.0001; // Величина пункта
  double level=272.0; // Уровень в пунктах от цены
  double levelprice; // Значение цены уровня
   
  levelprice=price+point*level; // должно быть 1.0272
   
  if(levelprice==1.0272){
  Alert("Правильно");
  }
  else{
  Alert("Неправильно");
  }

答: 浮点变量的小数位数是有限的。正因为如此,在计算过程中,数值可能会略有失真。计算完表达式后,在比较浮点数之前,应将其归一化到所需的精度水平。

  levelprice=NormalizeDouble(levelprice,4);

  if(levelprice==1.0272){
  Alert("Правильно");
  }
  else{
  Alert("Неправильно");
  }

* * *

问题: 我怎样才能在我的专家顾问中获得一个自定义指标的值?

答: 为了这个目的,我们有iCustom() 函数。

* * *

问题: 我从哪里开始学习MQL4?

答: MetaEditor 内置有非常详细的帮助指南(打开MetaEditor--主菜单--查看--导航器--字典)。
该终端带有两个专家顾问--MACD样本和移动平均线,你可以开始分析它们的代码。
此外,在mql4.com上有一个教程,有大量的文章 和各种代码
 
问: 为什么数值是0,尽管它肯定不是0?

  double point=0.00001; // Величина пункта
  Print(point);

答: Print() 和Alert()只输出四个小数位。如果你需要更多,你应该使用DoubleToStr()将数字双倍数转换为字符串。
Print(DoubleToStr(point,5));
 

问: EA用Print() 输出了大量的信息,但有一半以上的信息在测试器的某个地方丢失了。

答: 在测试过程中,如果输出频率很高,一部分信息不会打印到 "日志 "选项卡上,但测试后可以在测试仪的日志文件中看到所有信息。该文件在tester/logs文件夹中。

 
谢谢大家,再写。
我将在晚上到达那里时,只把常见问题放在一起。
 

给版主和愿意提供最低限度帮助的人一个建议。

你会同意,论坛对信息的结构化展示、处理和搜索是不够的。我认为唯一的出路是创建最完整的CHM手册, 然后 可以用来在论坛上 创建一个 完整的部分

首先,我创建了一个帮助结构。
它被分为3个大的部分

1)如何。 本节介绍了对可能出现的问题的主动回答。例如,如何获得指标数据,如何关闭所有订单,等等。同时,这一部分包含了一个大型的系统化的函数数据库(金氏函数类似物)。而最重要的是--已完成的原始TOR的例子,并对代码和注释进行了详细解释。这是一个非常复杂的部分,因为它需要加强知识和分析的系统化。将在最后一个地方填补。

2)为什么。 这一部分描述了新手经常遇到的问题(他们的例子被阿尔苏和 整数 在这个主题中很好地证明了)。

3) "哪里"(WHERE)。 这一部分主要是链接到哪里看或在哪里找到什么。我就不描述了,自己看吧。
我附上现成的chm结构档案(下载在帖子的底部)。


1.手册结构


2.演示 - 转到"哪里:有用的链接 -> MQL4教程"。

附加的文件:
mql4_4.zip  53 kb
 


前进的道路如下。

1.需要自由撰稿人 来填写各分节。也就是说,从本质上讲,他们需要深思熟虑的问题和详细的答案,并有详细的解释、一组交叉引用等(FAQ主题第一页上建议的帖子模板。(根据常见问题主题第一页上提供的那个帖子模板)。

2.所有为一个分节创建的问题都由该分节的策展人(1-2人)负责收集。他们处理它们,把它们带入一个共同的风格,并酌情形成一个交叉参考 这将有每个小节的主人,并不会搞乱数据库将是一个风格和答案模式。
例如," 哪里 "部分分为4个子部分:关于测试器的问题、终端、论坛和有用的链接 。每个小节都有足够的1人。他们将全力以赴地整理来自自由职业者的、他们认为必要的知识库,以及所有可能来自邻近部门其他成员的建议。当然,他们自己也应该积极参与填写数据库和创建问题。

3.作为填充分节--它们被转移到收集者 (如我)。有必要将它们收集在一个chm文件中,并将它们保持在一种风格。创建更多的交叉引用、索引,为搜索查询添加关键词。

策展人 的建议下 可以对子 章节进行重新分类或扩展,汇编者 就新结构达成一致。

一句话:
参与者: 欢迎来到我们的小屋。:) 如果你想成为一个子版块的策展人,而那些已经有了一些贡献的人,请随时在这里发表回答。
主持人: 会有很多的材料。请不要允许在这个主题中讨论和分散注意力的空洞帖子。在参与者的帖子被转移到共同基地后,还需要删除参与者的帖子,以方便该部门的工作。
策划人: 帮助文件是在WinCHM 4.17中创建的(需要的人可以联系)。对文件名和 位置的要求
- 文件夹结构必须完全重复帮助的结构
- 所有的文件/文件夹的名称必须只用英文给出有意义的短语
- 当前基地的例子,它在档案中 "编译 "了WinCHM

附加的文件:
chm4_2.zip  19 kb
 

sergeev:

...


1)如何。 本节介绍了对可能出现的问题的预期性回答。例如,如何获得指标数据,如何关闭所有订单,等等。这一部分还包含一个大型系统化的功能数据库(Kima等)。最重要的是--现成的原始TOR的例子,并有详细的代码解释和注释。这是一个非常复杂的部分,因为它需要加强知识和分析的系统化。将在最后填写。

...

阿列克谢,金的所有订单功能在可靠性和准确性方面都非常值得怀疑。你也在他们身上铆上了EA吗?

 
Integer:

阿列克谢,金的所有订单功能在可靠性和准确性方面都非常值得怀疑。你也在他们身上铆上了EA吗?

不,我会用我自己的,现实地测试。:)

说实话,除了在这个论坛的推荐中,我几乎没有在任何地方看到过金氏家族。 我只是在章节描述中给出了它们作为例子,以便你知道我们在谈论什么。而且我不确定Kim的会在其代码中进入手册。只有想法才会被采纳,并以一般的风格进行工作。

HOW 部分是最严重的。它最多应该由2-3人负责,因为所有的HOW部分都是最后一节的引子--"TOR的例子及其实施",它将展示所有可能的选择和使用前面所有部分功能的组合。

 

问题: 我如何比较两个类型为"双"的实数?


答案是。

double A;
double B;

if(NormalizeDouble(MathAbs(A-B),Digits)<0.1*Point)return(true);
else return(false);