从头开始自学MQL5语言 - 页 42

 
MrBrooklin:

我继续学习MQL5编程语言,现在发布一个脚本的代码,这是本主题参与者的一项任务的延续。该脚本已在所有模式下进行了测试。没有发现问题。我已经设置了最小的输入参数数量,开始时。脚本代码是用英语写的,代码的注释是用俄语写的,以方便学习正如我先前所承诺的,我试图以一个编程学校一级学生可以接受的方式来描述这个脚本。

问候,弗拉基米尔。

ok

现在使算法逻辑的代码更易读

结果只用了两行。

if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)Print("Я выучу язык MQL5!");
else Print("Я не выучу язык MQL5!");

你甚至不需要对它进行评论。

 
Renat Akhtyamov:

好的

现在使算法逻辑代码更易读

它只有两行。

if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)Print("Я выучу язык MQL5!");
else Print("Я не выучу язык MQL5!");

你甚至不需要对此进行评论。

你好,雷纳特!我同意,也许我不应该写太多的评论,但它们会帮助所有没有编程知识的新手。如果有人在我之前做了这项工作,学习过程就会快得多。评论将帮助我更快地记住自己的代码。也许将来的评论会更短。

问候,弗拉基米尔。

 
Roman Shiredchenko:


你的代码和逻辑是正确的。在我的IMHO上,我昨天看了一下,一开始我自己也很惊讶于这个零,但后来我赶上了差异芯片......:-)

你好,罗曼!是的,这是技术教育的后果,我的思维逻辑有点不同,但彼得说的零是对的,所以我改了脚本代码。

问候,弗拉基米尔。

 
MrBrooklin:

我继续学习MQL5编程语言,现在发布一个脚本的代码,这是本主题参与者的一项任务的延续。该脚本已在所有模式下进行了测试。没有发现问题。我已经设置了最小的输入参数数量,开始时。脚本代码是用英语写的,代码的注释是用俄语写的,以方便学习。正如我先前所承诺的,我试图以一个编程学校一级学生可以接受的方式来描述这个脚本。

问候,弗拉基米尔。

逻辑方面的问题仍然存在。

1.函数应该计算出一些东西。在这种情况下,两个函数都用其输入变量的值初始化全局变量,而不做其他事情。也就是说,如果你在条件中放入inpu变量,什么也不会改变。

2. have_time等于Days_passed,这是由用户设置的。该条件说:如果(have_time()>= period_learning...这是500,然后它说&&have_time() >0...这是一个逻辑错误。如果have_time()高于500,那么have_time()就已经高于0,所以这段代码是不必要的。

3.问你会不会学习的结果不应该只取决于钩子。你需要考虑一些具有未定义值的变量,无论你的意愿如何,它都会影响计算。否则,就没有问题了--你输入的就是你得到的。


P.S. 如果输入have_time > 0控制peroid_lerning的值,在输入负值或零的情况下,更正确的做法是输入条件&&period_learning > 0。
 
Fast235:

首先,向Dmitry Fedoseyev学习如何处理字符串变量,在学习别人的代码阶段,信息链是非常模糊的。

他评论的文章把一切都说清楚了,你会顺便了解一些细节,我是作为这里大多数文章的读者说的,我想没有人比我读得更多)

你好,谢谢你的提示。我读过德米特里-费多谢耶夫的文章,但到目前为止,我很难从他的文章中学习,因为我没有受过基本训练。希望它能变得更容易。顺便说一下,编写Learning_MQL5.mq5脚本帮助我认真理解了什么是函数,它有什么用处,以及如何创建函数

最好的问候,弗拉基米尔。

 
Реter Konow:
逻辑方面的问题依然存在。

1.这些函数必须计算一些东西。在这种情况下,两个函数都用管道变量的值初始化全局变量,而不做其他事情。也就是说,如果你在条件中放入inpu变量,什么也不会改变。

2.Have_time等于Days_passed,这是由用户设置的。该条件说:如果(have_time()>= period_learning...这是500,然后它说&&have_time() >0...这是一个逻辑错误。如果have_time()高于500,那么have_time()就已经高于0,所以这段代码是不必要的。

3.问你会不会学习的结果不应该只取决于钩子。你需要考虑一些具有未定义值的变量,无论你的愿望如何,它都会影响计算。否则,就没有问题了--你输入什么就得到什么。

你好,彼得!知道你会有问题,特别是关于第2点。

这里的代码不是多余的,而是非常聪明的。如果你试图从脚本代码中删除&&have_time()!=0(你把它写成&&have_time()>0),那么在输入参数Period_learning=0Days_passed=0情况下,结果将是 "我将学习MQL5!",从教条主义的观点来看,这是不允许的。

我同意其他观点--有很多事情需要考虑。

问候,弗拉基米尔。

 
MrBrooklin:

你好,彼得!我知道你会有问题,特别是关于第2点。

这里的代码不是多余的,而是相当精细的。如果你试图从脚本代码中删除&&have_time()!=0(你写成&&have_time()>0),那么在输入参数Period_learning=0Days_passed=0情况下,结果将是 "我将学习MQL5!",从教条主义的观点来看,这是不允许的。

我同意其他观点--有很多事情需要考虑。

问候,弗拉基米尔。

好吧,看:have_time()本质上返回Days_passed inpu变量的值。如果Days_passed被设置为0,那么条目if(...have_time()!=0...将不会让我们进入条件,但如果Period_learning 被设置为0,我们将进入条件。因此,写Period_learning >0将同时保护我们免受Days_passed变量中的零和Period_learning变量中的零的影响,而写if(...)have_time()!=0 ...仅针对Days_passed中的零)。
 
Реter Konow:
好吧,看:have_time()函数本质上是返回Days_passed输入变量的值。如果Days_passed为零,那么if(...have_time()!=0...)条目将不会让我们进入条件,但如果Period_learning为零,我们将进入条件。因此,写Period_learning >0将同时保护我们免受Days_passed变量中的零和Period_learning变量中的零的影响,而写if(...)have_time()!=0 ...仅针对Days_passed中的零)。

我明白了。

尊敬的弗拉基米尔。

 
MrBrooklin:

我明白了。

问候,弗拉基米尔。

当然,主要的是,你已经向前迈出了一大步--你已经掌握并开始使用这些功能,祝贺你!)

按照这个速度,你很快就会落后了。

P.S. 对不起,没有打招呼。人们在论坛上通常不打招呼,当然这不应该被视为不尊重的表现。我记得大约五年前,当我和论坛成员打招呼时,一位版主训斥了我。))从那时起,我就不在这里打招呼了,只在私下里说。再次抱歉。))))
 
Реter Konow:
当然,你已经在主要事情上迈出了认真的一步--你已经掌握并开始使用这些功能,为此当然要祝贺你! 。

按照这个速度,你很快就会落后了。

P.S. 对不起,没有打招呼。人们在论坛上通常不打招呼,当然这不应该被视为不尊重的表现。我记得大约五年前,当我和论坛成员打招呼时,一位版主训斥了我。))从那时起,我就不在这里打招呼了,只在私下里说。再次抱歉))))。

谢谢你,彼得,谢谢你的鼓励之词!

至于礼貌性的谈话,特别是问候和祝愿大家有好日子和好心情。在我看来,这在论坛中是非常缺乏的。尊重对话者是我们这一代人从苏联时代就被灌输的东西。如果网站(论坛)的管理部门会就欢迎参与者的问题对我进行训斥,我将考虑到这一点并遵守规则。

问候,弗拉基米尔。