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

 
Реter Konow:
你让一个新手充满了无用的信息)。

这些信息是否有用,由初学者来决定

瓦西里-索科洛夫

说得好,信息量大,谢谢你

 
Alexey Viktorov:

这表明你不应该以这种方式炫耀你的欲望。弗拉基米尔还不如专门就这个或那个功能提出问题,得到有用的建议,而不是学C++或学汇编之类的 "专家 "的胡扯。你可以从研究打孔卡片开始。

我赞成TC按照他的计划学习,不要在他的头上 "跳"。所有的时间都很充裕。当然,人们应该学习MQL,并以正确的顺序学习。上述哲学(由Vasily和我给出)可能有助于结构化知识,但不是空洞的。而当学生处于学习的最初阶段时,他必须尝试按照我们的哲学符号来构造空性。

回到课本中去,暂时忘掉那些高大上的东西。
 
Vasiliy Sokolov:

继续前进。

  • 既然有很多事件,就有很多事件处理程序。由于事件被不一致地调用,其事件处理程序也被不一致地调用。由于存在不一致的调用,事件处理程序不能相互依赖,它们也不能相互依赖数据。唯一符合这些严格要求的结构体是一个函数
  • 功能不能相互依赖。如果一个函数返回总和a+b,第二个函数返回积a*b,那么这两个函数的结果将不取决于调用的顺序。我们可以用参数3和5调用第一个函数,得到8。然后用同样的参数调用第二个函数,得到24。然后调换他们的电话。其结果将是一样的。在参数3和5的情况下,加法函数将总是返回8。在参数相同的情况下,乘法函数将总是返回24。
  • 从上面可以看出,事件处理程序只能是一个函数。如果一个新的tick事件发生,这将由OnTick函数处理。如果发生启动事件(脚本的一次性启动),则由特殊的OnStart函数处理。
  • 这个功能是通用的。这个函数不仅可以处理事件。该函数可以返回一些有用的东西,例如,当前时间。一个函数可以用传递给它的参数进行复杂的计算,并将这些计算的最终结果作为一个单一的值返回。最后,一个函数可以是一个数据提供者。你调用该函数并从中获得你需要的数据,如报价。
  • 在内部,MetaTrader由数以千计的功能组成,其中约有15万个功能是友好地提供给用户的。这些都是非常有用的功能。它们允许你检查系统时间并获得你感兴趣的仪器的数据。这些功能是用来发送交易指令 的。你可以打开ICL手册,看到它由函数和它们的参数组成。因此,MetaTrader,就用户程序而言,是一个大的功能集。
  • 仅有普遍的功能是不够的。无论系统中增加了多少新功能,都会有不足之处。原因是,每个人都有不同的需求。没有适用于所有场合的一刀切功能。最通用和普遍的功能已经包括在MetaTrader中,并与我们友好地分享。然而,用户的需求是无止境的。MetaQuotes无法满足其终端10万名用户的个人需求。相反,他们做了一些更灵活的事情:他们让用户自己创建他们想要的功能。用户从中受益。与其使用不适合他们的系统函数,他们可以写出自己的函数,完美解决他们的问题。没有一个系统功能是完美的,因为它具有普遍性。
  • 一个用户能够编写自己的函数并理解其工作原理的技能告诉你一个程序员有多熟练。如果他/她理解一个程序是一组不连贯的处理程序(以函数的形式),不连贯地处理传入的事件,那就很好。如果他知道如何编写自己的函数,这是另一个优点。如果他能将几个功能(包括他自己的功能和系统功能)的工作结合到一个共同的算法中,这对他来说是另一个好处。
  • 如果你明白MetaTrader(第四和第五)的一切都以某种方式基于函数、函数和功能 - 一切突然变得清晰。帮助不再是作为一本厚厚的书,其中有一堆零散的代码片段,而是作为可用函数和它们的作用的指南。其他一切,如数据类型、数组、结构、类,都是不相关的。这都是为了支持功能,以便他们能够返回一些东西并接受一些东西。

(暂时的)

太好了!!!。瓦西里,你在教学方面有天生的才能。一切都很清楚,可以理解,特别是对于那些完全处于零基础的人来说。你有没有想过写一本类似于谢尔盖-科瓦廖夫的《MQL4教程》的书,只是现在它将被称为瓦西里-索科洛夫的《MQL5教程》?

你认为这个主题会给这样一个倡议带来刺激,对吗,瓦西里?

问候,弗拉基米尔。

 
瓦西里只把你的注意力集中在一些特定的方面,认为它们比其他方面更重要。例如,功能或事件。在S.Kovalev的作品中阅读有关功能的内容,你会发现不亚于(甚至更多)详细和易懂的解释,但不要集中在它们身上,而损害其他领域。因此,你必须阅读课本。

是的,瓦西里写得很好,但由于他的主观理解,有点 "歪打正着"。

我不是说 "向我学习,我知道怎么做才对!",我是说 "向教科书学习,把基础知识搞清楚,而不是我现在关心的科目中匆忙形成的概念"。

P.S. 然而,这取决于你。
 
Реter Konow:
瓦西里只把你的注意力集中在一些特定的方面,认为它们比其他方面更重要。例如,一个函数或一个事件。阅读S.Kovalev的关于功能的文章,你会发现不亚于(甚至更多)详细和易懂的解释,但没有把重点放在它们身上,而损害了其他领域。因此,你必须阅读课本。

是的,瓦西里写得很好,但由于他的主观理解,有点 "歪打正着"。

我不是说 "向我学习,我知道怎么做才对!",我是说 "向教科书学习,把基础知识搞清楚,而不是我现在关心的科目中匆忙形成的概念"。

P.S. 然而,这取决于你。

而你,彼得,可以提议你和瓦西里一起好好干,写这样一本关于MQL5的书。

写书是 人类历史上 留下 痕迹 最好方式,特别是在编程史上。想一想吧!

问候,弗拉基米尔。

 
MrBrooklin:

彼得,我建议你和瓦西里一起好好干,写这样一本关于MQL5的书。

写书是人类历史上留下 痕迹 最好方式,特别是在编程史上。想一想吧!

问候,弗拉基米尔。

谢谢你的建议,但瓦西里很容易就 "击败 "了我的经典方法,而这正是这样一本书所需要的。我只能通过编程的棱镜对对象和环境的动态互动提供抽象的理解,但这将是最后一章。))))
 
Реter Konow:
谢谢你的提议,但瓦西里很容易就 "击败 "了我的古典方法,而这正是我在这样一本书中所需要的。我只能通过编程的棱镜对对象和环境的动态互动提供抽象的理解,但这将是最后一章。))))

我明白了。现在我想知道瓦西里对我的新书提案的看法。

现在我正在学习他的文章《通用交易专家顾问:使用自定义追踪止损(第6部分)》。

真诚的,弗拉基米尔。

 

继续在

从上面的帖子中可以看出,重点是在功能上。一切都是为了他们,除了他们,什么都没有。人们可能会认为这是一个明显的主观偏见或一些神秘的 "哲学"。然而,这里没有哲学。而这种对功能的关注并不是偶然的。问题是,在编程中,功能是至关重要的。此外,函数是数学中一个非常重要和基本的概念。在上世纪20年代,阿隆佐-丘奇开发了一个基于函数的微积分系统。这被称为lambda-calculus。这个系统正式确定了可计算性的概念,并将计算机计算和数学紧密地结合在一起。 世界上领先的程序员开发了基于λ-微积分的所谓函数式编程语言,其中函数占主导地位。例如,在功能性的Haskell编程语言中,甚至没有for循环或类似的东西。相反,建议以特殊的方式,递归 调用一个函数,以计算出所需的值。可以证明,只有函数而没有赋值,就有可能写出一种图灵完整的编程语言。这是一种允许编写任何其他图灵完备语言(如程序性语言或OOP语言)中可能存在的一切的语言。

MQL不是一种函数式语言,而是一种程序式语言,可通过类进行扩展,具有严格的类型和丰富的面向主题的API(以相同的函数形式,哦,令人惊讶)。另一方面,函数理论是建立在坚实的数学基础之上的,它为使用任何有函数的编程语言提供了简单而有效的模式,因此,放弃函数及其背后的数学基础至少是没有远见的。这就是为什么我如此关注功能。你对数组设计的理解有多深并不重要,如果你在某个数据类型上犯了错误也不重要。这可以很快得到修复和纠正。但如果你不了解函数以及它们之间的关系,你甚至不会成为一个普通的程序员。

因此,要学习如何正常进行,即随着时间的推移线性地扩展你的程序的功能,你需要学习以下内容。

  • 清楚地(如果不彻底,但显然需要)表示MetaTrader 4.5的事件模型。
  • 知道如何使用系统功能。用自己的函数总结他们的结果。将系统函数的调用合并为你自己的函数。
  • 能够并喜欢编写自己的函数。
  • 能够理解函数调用链:例如,当函数a()调用函数b(),而b()调用c(),e()调用函数c()。
  • 知道如何编写干净的函数,理解为什么要编写干净的函数。我将在后面解释什么是纯函数。

功能似乎很简单。"有什么可学的。你只需要在这里读一段,就可以了。然后是数组,对于,而......"- 不,他们不是。功能确实看起来很简单(这很好)。但要使它们真正有效地解决任务,函数必须具有某些属性,并以某种方式相互结合。如何做这一切也许我以后会写。

 
MrBrooklin:

我明白了。现在我想知道瓦西里对我的新书提案的看法。

我目前正在学习他的文章《通用交易专家顾问:使用自定义追踪止损(第6部分)》。

真诚的,弗拉基米尔。

没有。将不会有书。也许有一些文章。但在最近的时间内肯定不会。

 
MrBrooklin:

彼得,我可以建议你和瓦西里一起好好干,写这样一本关于MQL5的书。

我不这么认为。我和彼得的观点太不同了。你可以看一下我们的一些代码,看看它们有多大的不同)。