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

 
Vasiliy Sokolov:

这就对了! 每个人都试图利用基于生活经验的对软件的错误认识来学习编程。例如,一个程序就像一本书中的一篇文章,有一个目录,一个介绍,一个目录和一个结论。也就是说,该方案是一种从头到尾的顺序计划。在最初阶段,这种想法是可行的,但后来,随着程序变得越来越复杂,困难就出现了,无论如何也不可能写出一个可靠的工作程序。科瓦廖夫是一个非常善于提供看跌服务的人:他试图用他易懂的概念仪器向读者解释,该方案是同一本有这样那样的方案。但是,没有什么计划!脚本的 "方案 "与专家顾问根本不同,而专家顾问的方案也与指标不同。

那么你认为一个人应该如何学习?来自巴解组织哲学的权利?这是不可能的。
 

Vasiliy Sokolov:

...4) 最奇怪的块是 "错误处理 "块。你可以进入它,但你无法摆脱它。也就是说,程序抓到了一个错误,并坐在这个块中(它必须挂起,直到完全重启,或者,更好的是,终端永久挂起,以确保它不会犯更多的错误--这就是想法!) ...

嗨,瓦西里!谢谢你的详细和高超的解释!我唯一不能同意的是第4点。重点是,箭头既要通向"错误处理单元",也要通向"错误处理单元"。连接这个单元和另一个单元的线的两端有箭头,从学院的计算机科学课程中我仍然记得,它意味着一个双向的过程,即来回。因此,我对这一情况没有任何怀疑。至于你信息的其余部分,对我来说一切都很清楚。

问候,弗拉基米尔。

 
MrBrooklin:

你好,瓦西里!谢谢你的详细和高素质的解释!我唯一不能同意的是第4点。事实是,箭头既通向 "错误处理单元",也通向 "错误处理单元"。连接这个单元和另一个单元的线的两端有箭头,从学院的计算机科学课程中我仍然记得,它意味着一个双向的过程,也就是来回。因此,我对这一情况没有任何怀疑。至于你信息的其余部分,对我来说一切都很清楚。

问候,弗拉基米尔。

这是正确的,第一个人抓住了机会 :-)

在你的研究中使用他的expa 作为模板--称职的代码!

在那里和


"
  • 专家顾问可以通过'工作
  • 时间框架'进行优化
  • 每一栏只能有一个'进入市场'的交易(这是一个内部参数,它没有放在输入参数中,与'只有一个头寸
  • '参数无关)
  • 当在'内栏'模式下工作时('搜索信号。
  • 或等于'10')的情况下
  • ,当前条形是0号条形,
  • '搜索信号,以秒为单位
  • '模式(
  • '搜索信号,以秒为单位
  • '小于'10')下,当前条形是1号条形
  • '参数 - 限制哪一方交易。可以取值 "只允许买入头寸"、"只允许卖出头寸"和 "允许买入和卖出头寸
  • "
  • 参数 "使用时间控制"- 搜索交易信号的时间范围 从 "开始小时":"开始分钟"到"结束小时":"结束分钟"
  • Pips Or Points: "
  • 参数设置止损、止盈和追踪的标准计算

    и

    反向和其他东西,并在开始时将标准库插入代码中,以简化位置的打开fie - 学习和不要担心。

    标志"头寸:只有一个"设置为"true",允许专家顾问在市场中不超过一个头寸。标志"位置:反 转 "负责信号的反转。有趣的标志"头寸:关闭对面"--如果在开仓前将此标志设置为"真",则保证删除对面的头寸。打印日志'打印所有操作的扩展日志。冻结和停止 水平系数 "参数为停止和冻结水平定义了一个系数,用于当这些水平对一个符号来说等于零的情况。建议采用 "3 "的值。

    iFractals iAMA
    iFractals iAMA
    • www.mql5.com
    Получать сигнала на откате (по iFractals (Fractals) ), а тренд определять по iAMA (Adaptive Moving Average, AMA). По индикатору iAMA (Adaptive Moving Average, AMA) определяется тренд. Условия тренда: на текущем баре и на двух предшествующих индикатор равномерно растёт (тренд вверх) или равномерно падает (тренд вниз). При этом цена (High или...
     

    我将写下我强烈推荐给作者的原则,以了解该方案的意义所在。与科瓦廖夫的传单不同,其中有些材料是正确的,有些包含严重的错误,有些是与读者的一般性猜测,这些原则是永远和100%正确的,无论你在MQL中写什么:专家顾问,脚本,或专家顾问。

    第一原则。MQL中的任何程序都会 处理事件。事件是一个通知,它包含关于某事的信息,通常是关于已经发生变化的事情。例如,一个新的刻度线已经到来,或者我们的挂单已经被执行。其他事件不包含任何信息,它们只是发生。例如,"定时器 "事件可以以设定的周期来调用用户函数。它没有通知用户有什么变化。它只是调用用户的代码,所以不需要任何额外的信息。从事件的定义来看,有几个非琐碎的方法。

    • 第一个含义是,一旦我们收到一个事件,我们应该尽快处理它。可以有很多事件,事件可以堆积在队列中。MeteTrader(不是我们的程序)处理这些事件。为了做到这一点,它使用了一种叫做流量的 特殊资源。这一资源是非常宝贵和有限的。由MetaTrader拥有的线程慷慨地执行我们在PC的CPU上写在脚本中的粗略的、次优的和缓慢的代码。如果事件处理 减慢了我们代码中的线程,在某些情况下,MetaTrader中运行的其他程序将无法正常执行。他们会等待我们把线程从我们无用的计算中释放出来,然后在释放的线程上执行他们的代码。
    • 有很多活动。我们可以处理许多可用的事件,或者只处理一个。当我们制作一个脚本时,它只处理一个事件,即OnStart,它发生一次。当我们编写一个专家顾问时,它可以同时处理多个事件。这意味着把你的程序塞进 "为这本书编程 "的范式里是没有用的。相反,我们应该只理解为程序是某些事件的处理者。它们可以按任何顺序被调用,也可以根本不被调用。这些事件是相互独立的。因此,程序中处理这些事件的部分并不相互依赖。它们是非线性的,没有顺序性

    (暂时就这些了,如果我想的话,我会继续)。
    Документация по MQL5: Основы языка / Функции / Функции обработки событий
    Документация по MQL5: Основы языка / Функции / Функции обработки событий
    • www.mql5.com
    В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
     
    Roman Shiredchenko:

    这是我得到的第一份好运 :-)

    在你的研究中使用他的expa 作为模板--称职的代码!

    在那里和


    "
  • 专家顾问可以通过'工作
  • 时间框架'进行优化
  • 每一栏只能有一个'进入市场'的交易(这是一个内部参数,它没有放在输入参数中,与'只有一个头寸
  • '参数无关)
  • 当在'内栏'模式下工作时('搜索信号。
  • 或等于'10')的情况下
  • ,当前条形是0号条形,
  • '搜索信号,以秒为单位
  • '模式(
  • '搜索信号,以秒为单位
  • '小于'10')下,当前条形是1号条形
  • '参数 - 限制哪一方交易。可以取值 "只允许买入头寸"、"只允许卖出头寸"和 "允许买入和卖出头寸
  • "
  • 参数 "使用时间控制"- 搜索交易信号的时间范围 从 "开始小时":"开始分钟"到"结束小时":"结束分钟"
  • Pips Or Points: "
  • 参数设置止损、止盈和追踪的标准计算

    и

    反向和其他的东西,并在开始时在代码中连接标准库,以简化位置的打开fie - 学习和不要担心,但要习惯于写标准 代码 - 有缩进和其他的东西

    标志"头寸:只有一个"设置为"true",允许专家顾问在市场中不超过一个头寸。标志"位置:反 转 "负责信号的反转。有趣的标志"头寸:关闭对面"--如果在开仓前将此标志设置为"真",则保证删除对面的头寸。打印日志'打印所有操作的扩展日志。冻结和停止 水平系数 "参数为停止和冻结水平定义了一个系数,用于当这些水平对一个符号来说等于零的情况。建议使用 "3 "的值。

    你好,罗曼!谢谢你提供的例子。我多次试图理解弗拉基米尔-卡尔普托夫写的代码,但对我来说,这仍然是一个无法达到的水平。稍后,当我脑子里有更多的信息时,我很可能会回到他的密码上。但还是要感谢你的提示!

    问候,弗拉基米尔。

     
    Vasiliy Sokolov:

    我将写下我强烈推荐给作者的原则,以了解该方案的意义所在。不像科瓦廖夫的传单,有些材料是正确的,有些包含严重的错误,有些是与读者的一般性猜测,这些原则是永远和100%正确的,无论你在MQL中写什么:专家顾问、脚本或专家顾问。

    第一原则。MQL中的任何程序都会 处理事件。事件是一个通知,它包含关于某事的信息,通常是关于已经发生变化的事情。例如,一个新的刻度线已经到来,或者我们的挂单已经被执行。有的事件没有任何信息,但就是发生了。例如,事件 "定时器 "可以以设定的周期来调用用户函数。它没有通知用户有什么变化。它只是调用用户的代码,所以不需要任何额外的信息。从事件的定义来看,有几个非琐碎的方法。

    • 第一个含义是,一旦我们收到一个事件,我们应该尽快处理它。可以有很多事件,事件可以堆积在队列中。MeteTrader(不是我们的程序)处理这些事件。为了做到这一点,它使用了一种称为流量的 特殊资源。这一资源是非常宝贵和有限的。由MetaTrader拥有的线程慷慨地执行我们在PC的CPU上写在脚本中的粗略的、次优的和缓慢的代码。如果事件处理 减慢了我们代码中的线程,在某些情况下,MetaTrader中运行的其他程序将无法正常执行。他们会等待我们把线程从我们无用的计算中释放出来,然后在释放的线程上执行他们的代码。
    • 有很多活动。我们可以处理许多可用的事件,或者只处理一个。当我们制作一个脚本时,它只处理一个事件,即OnStart,它发生一次。当我们编写一个专家顾问时,它可以同时处理多个事件。这意味着把你的程序塞进 "为这本书编程 "的范式里是没有用的。相反,我们应该只理解为程序是某些事件的处理者。它们可以按任何顺序被调用,也可以根本不被调用。这些事件是相互独立的。因此,处理这些事件的程序部分并不相互依赖。它们是非线性和非顺序性 的。

    (暂时就这些了,如果我想的话,我会继续)。

    干得好,瓦西里,我在等待续集,如果你不介意写的话你告诉我的一切对我来说都是轻描淡写,可以理解的!

    问候,弗拉基米尔。

     
    MrBrooklin:

    干得好,瓦西里,期待着续集,如果你不介意写的话你所报告的一切对我来说都是简明易懂的!

    问候,弗拉基米尔。

    是的,有趣的判断。

    1.任何程序都是功能块的层次结构,是一个相关的、相互依赖的参数系统。

    2.该事件是程序与外部编程环境互动的结果,或者是内部变化的结果。环境通过调用程序(OnTick,OnChartEvent...)来 "通知 "该事件。

    4.环境(终端)对程序是中立的,但可以影响它。

    5.程序通过特殊功能接收终端和市场中的环境信息,并可以在其逻辑中使用这些信息。

    6.程序可以通过特殊的查询来接收关于自身或其对象的信息,并在其逻辑中使用这些信息。

    7.事件用if()语句描述。

    8.事件有响应变化的处理程序。

    9.反应可能是对象(s)状态的改变(其参数值的质量变化)或一些计算工作。

    10.事件处理程序被分组为分层结构(事件模型)。

    11.软件对象可以订阅各种事件,并在接收者的名单中。

    ...以及更多...:)

    P.S. Vasiliy会描述得更好、更清楚。
     

    继续前进。

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

    (暂时到此为止)
     
    你用无用的信息淹没了一个新来者)。
     
    Реter Konow:
    初学者被无用的信息所淹没)。

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