关于MQL4编程的在线书籍的测试版 - 由Sergey Kovalev (SK.)撰写。 - 页 3

 
Climber:
一周前我第一次尝试Meta Trader,发现它比我以前的终端(Rumus和Forex Trader)要方便得多。大约两年前,当我了解到外汇并开了第一个模拟账户时,我想知道如何将一切都自动化。然后我打开终端,在邮件部分看到了自动交易的信息。而我就在这里))))。我认真地阅读了这本书,我希望很快就能为我开发的战略编写第一个专家顾问。我以前完全没有接触过编程,甚至很难想象我将会学习编程))))。在我阅读的过程中,问题出现了,但它们也随着我的阅读而消失了。问题出现了,我往前看了看,很满意,因为我在看了几章后就看到了答案,于是又按顺序看了一遍。 我尤其被在历史数据上测试策略并因此调整策略的可能性所吸引。
无论如何,非常感谢你的书。


它是非常好的。你是一个新的MT用户。而你目前对编程几乎一无所知。

请允许我建议你每月至少报告两到三次事情的进展情况(如果你愿意,可以更频繁地报告)。这将是非常有趣的。

同时,如果你允许的话,我有一个问题。你说,出现了一个问题,在下面的章节中会有回答。我已经试图把它放在一起,以避免这种情况。能否请你澄清一下你指的是什么问题?

 
SK. писал (а):
Climber:
一个星期前,我第一次安装并试用了Meta Trader。事实证明,这个终端比我以前的终端(Rumus和Forex Trader)要方便得多。大约两年前,当我了解到外汇并开了第一个模拟账户时,我想知道如何将一切都自动化。然后我打开终端,在邮件部分看到了自动交易的信息。而我就在这里))))。我认真地阅读了这本书,我希望很快就能为我开发的战略编写第一个专家顾问。我以前和编程完全没有关系,甚至很难想象我会学习编程))))。在我阅读的过程中,问题出现了,但它们也随着我的阅读而消失了。问题出现了,我往前看,很满意,因为我在几章之后就看到了答案,于是又按顺序去读所有的东西。我尤其被在历史数据上测试该策略的可能性所吸引,并因此而对其进行修正。
无论如何,非常感谢你的书。


它是非常好的。你是一个新的MT用户。而你目前对编程几乎一无所知。

请允许我向你提出:每月至少让我知道你的情况(如果你愿意,也可以更频繁)。这将是非常有趣的。

同时,如果你允许的话,我有一个问题。你说,出现了一个问题,在下面的章节中会有回答。我已经试图把它放在一起,以避免这种情况。能否请你澄清一下你指的是哪个问题?

我曾经用Sign of Misery来使我的工作更容易,在这里你可以在不了解任何编程的情况下写一个程序。你只需要按照执行的顺序指定动作(我主要把它作为一个自动机,虽然还有更多的可能性)。假设我在Excel中的4列中有很多数值(地球物理学的电测数据,每20厘米)。为了进一步处理这些数据,我需要只从仪表上获取数据(即从0、1、2、3、4 ....)。我做了这个程序来自动化操作,通过命令来模拟按键和改变鼠标的坐标。我把它编入了Ehe。但这只是一个离题。该程序必须制作标签,并设置过渡到这些标签的条件,即进行一个操作周期,并有条件退出这个周期。当我谈到构建EA的问题时,我对代码结构的总体看法有了一些了解。但当我开始读这本书时,我对程序结构有点困惑,然后由函数int start()在每个tick上重复,如果在其执行时我发现了bid的价格,它被写入一个变量并在整个执行过程中被存储在其中,那么我如何知道价格何时发生了变化,程序可以根据新价格执行任何其他动作?我以为我的程序中的价格会被某种循环代码所更新,不断地要求它。我还有一个问题:当你调用一个函数并执行时,我想象下一个函数会被执行,但结果是控制权返回到函数中,跟随最初调用函数的那个函数。但这个事实让我特别高兴,因为它让我明白了(因为我想,其他的行动呢,这些行动遵循这个功能,它们是否以这种方式跳过?)现在我有一个这样的问题。我的理解是,在执行init函数时,我将调用一个函数,为我的订单计算一个合适的开盘价,并根据我账户上的余额数据计算手数;init完成后,将开始执行start函数,其中将包含一个 "等待 "的代码,以便交易的必要价格,只要它将到来,订单开盘将被执行(获利不被认为是放,因为如果将有一个跳跃,这将跳过值ТР,它不会触发,和跳跃这可能是有利的比值ТР,因此,我想形成订单关闭订单在最后已知的价格,当当前价格等于,或< ,或>指定。或>);那么对我来说最神秘的事情是在哪里写等待订单 "关闭 "价格的代码,并返回到最开始,即再次计算结算价格并使用订单 "关闭"。也就是说,我必须计算出开盘时要设定的价格,等待这个价格,等等。我提前看了一下各章节;我想我在标题中看到了一些东西,这可能会回答我的问题。当我读完《开盘和定盘》一节时。我昨天早上开始读它。
当然,我会让你知道进展情况的,就像我的情况一样,没有沟通))。我希望能得到建设性的反馈。
谢谢你的时间和关注。
 

请将以下信息分成几段,因为很难理解所写的内容。

Climber:
但在开始阅读这本书时,我对程序的结构感到有点困惑,然后是int start ()函数,该函数在每个tick点重复执行,如果在其执行时我知道bid的价格,然后它被写入一个变量并在整个执行时间内存储在其中,那么我将如何知道价格何时发生变化,程序可以根据新价格执行任何其他行动?我以为我的程序中的价格会被一些循环代码更新,不断要求它。

你说的很对,为了使程序能够实时工作,有必要定期通知新的价格事实和价格本身。

的确,有2种方法可以做到这一点。

第一种方法是在无尽的循环中运行一些函数,并从它那里定期请求价格。
但这种方法也有缺点。
- 如果经常进行查询,其结果是对通信渠道造成沉重的负担,并浪费PC资源。
- 如果你不经常进行查询,你可能会在两次查询之间错过一个新的价格。

第2种方法(被认为是MQ技术的基本方法)是非常不同的,因为必要代码的启动属于终端。终端接收来自服务器的信息,了解到一个新的tick已经到来(新价格的事实和价格本身),基于这些信息,终端启动()功能。所有这些在MQL4的程序 部分都有描述。

攀登者
现在我有一个问题:我意识到,当执行初始函数时,我将调用计算订单开仓价格的函数,同时也计算手数,基于我账户上的余额数据;在初始执行后,将开始启动函数启动。

不正确。init()和start()是特殊函数。它们被客户终端根据自己的属性(或者更简单地说,根据规则,在什么条件下被调用执行)来调用。这在特殊功能 部分有描述。init()函数被执行一次,当程序被加载到窗口时。而start()则在每个tick上被调用。这是很方便的。一个嘀嗒声来了,带来了一个新的价格=终端启动start(),直到它被执行。所有的计算都必须插入其中--计算手数、开仓/平仓指令的条件以及其他一切。

攀登者
然后,最让我困惑的是在哪里写代码,期望订单的 "平仓 "价格并返回到起点,即再次计算开盘价,等待这个价格,等等。我提前看了一下各章节;我想我在标题中看到了一些东西,这可能会回答我的问题。我将喜欢阅读《开局与定局》部分。

从你的问题来看,你不需要写程序,也不需要读你现在读的东西。在这种情况下,强烈建议重新开始阅读本书。始终如一,不求有功但求无过。而在你前进的过程中,将所有提出的例子输入ME,并在你的电脑上执行它们。而且在完全理解代码的每一个字母之前,不要进入下一节。查阅 "勾选"、"控制"、"功能"、"特殊功能"、"操作者 "等概念,并不时地查看术语词典

攀登者
我一定会报告进展情况,因为在我的位置上,没有沟通))。我希望能得到建设性的反馈。
谢谢你的反馈。

我希望你能正确地接受建议并遵循它。

 
SK.写道:(a)。
<br / translate="no">

攀登者
然后,最让我困惑的是,在哪里写等待 "收盘 "价格的代码,并返回到起点,即再次计算开盘价格,等待这个价格,等等。我提前看了一下各章节;我想我在标题中看到了一些东西,也就是说,这似乎是我问题的答案。我仍在阅读《开局与定单》一节。

从你的问题来看,你还不需要写程序,你也不需要读你现在读的东西。

呃,我想我已经掌握了专家的结构。
迅速在vdp中潦草写下,给你。

啟動

开始

我设置了未结订单的最大数量=1。

检查有多少订单是开放的。

如果1是开放的,那么我就调用函数来关闭订单。

如果没有订单,我就调用函数 "计算价格和手数"。

--------------------------

有必要计算出有利的买卖价格,并计算出手数。

--------------------------

查询当前价格。

如果当前价格>=卖出的议价价格。

然后开出与已经确定的手数相等的卖单。

如果没有,则将当前价格与中标价格进行比较。

如果当前价格<=买入价格。

分别打开一个买入订单。

--------------------------

调用函数 来关闭订单。

返回

灭亡


明白了吗?
 
Climber:
明白了吗?

嗯,总体来说是对的 :)祝贺你。能理解其他东西总是好的。

不过,请听我的建议:回到开头,从头开始,不要跳过或跳过,有条不紊地在你的电脑上执行教程中建议的所有代码。

 
Parabellum:

书中有一个有趣的ROC指标--变化率指标(https://book.mql4.com/ru/samples/iroc)。我明白这本书是一本教科书,作者没有义务给出半粒或甚至四分之一粒的源代码,但该指标的想法非常好,我对它进行了一些调整,使滞后性更弱。

顺便说一下,在网页上公布的指标文本本身有两个错误的代码,因此是无法编译的。
      Line_4[i]=(Line_1[i]+Line_2[i]+Line_3[i])3;// Суммарный массив
      //-------------------------------------------------------- 17 --

      Line_5[i]= Sum(Aver_Bars+1); // Индик. массив сглаженной линии
有两次分部字符丢失(在创建html文件的过程中消失了?)
文中链接的指标文件是正常的。
 
SK. писал (а):

嗯,总体来说是对的 :)祝贺你。能理解其他东西总是好的。

不过,请听我的建议:你需要回到起点,从头开始,不要跳来跳去,有条不紊地在你的电脑上执行教程中建议的所有代码。


是的,我同意,看到和感受到你所读的任何结果是非常重要的,那是当它被固定在长期记忆中的时候,更多的是在情感内容的影响下,出现一个以上的联想:)对了,我还想强调的是,为了激发兴趣,有必要回过头来或使用那些最重要的章节,那么兴趣本身就会引向目标,扩大知识圈。在我们的情况下,最困难的事情是在我们前进的过程中了解什么是有趣的,制定出最有效的顺序,因为我们看到我们拥有的一切的有效性。我想把联想记忆的运作与引导记忆联系起来,只要有至少一个链接(联想),分布的区域就会存在,链接越多,区域就越有可能不被释放,从而确保其使用和后续的效用。因此,有必要不断补充协会的库存,以巩固你所读的东西。

P.S.: 如果我走得太远,请原谅。)

 
timbo: 顺便说一下,发表在网页上的指标文本本身在代码中就有两个错别字,因此是无法编译的。
      Line_4[i]=(Line_1[i]+Line_2[i]+Line_3[i])3;// Суммарный массив
      //-------------------------------------------------------- 17 --

      Line_5[i]= Sum(Aver_Bars+1); // Индик. массив сглаженной линии
除法符号丢失了两次(在创建html文件时消失了?)
文中链接的指标文件是正常的。


是的,有这样一个东西。源代码中还没有错误,而文本代码由于某种原因在某些地方被搞砸了。我们会解决这个问题。
 
xnsnet:

P.S.: 如果我反应过激,请原谅:)

:)是的,那里有一点)))。
 
还有一个关于这本书的小说明。最好使用现实生活中的例子,我指的不是猫,而是金钱或相关的东西。例如,当我说到循环运算符时,与羊的例子让你有点分心,你开始思考如何在我们的条件下使用它,这就分散了你对感知过程的注意力。

我对循环已经感到很困难了(我将不止一次地回到这些部分),然后还有那些羊。

只是我的看法,如果考虑到一个具体的交易(几乎是突袭:))的例子,好吧,交易,那么如果读者遇到一个与他的想法相似的例子(他不知道如何实现),他就会怀着极大的兴趣考虑这个例子,并思考如何修改和定制它来实现他的想法(我想你知道我的意思)。

我有这样一个例子,我对如何为1/3的余额开立订单感兴趣。你无法想象,为了将1/3转换为美元,以便我得到手数(0.1手或3.5手),我的脑子里进行了怎样的数学运算。当我看到openbuy.mq4 的例子时,我是多么高兴,它打开了一个价值35%的可用资金的买入订单,并有一些指定的止损订单的值。我把它看了一遍又一遍,看了每一行,什么,为什么,还有哪里。我看了一下其中使用的标准函数(MathFloor, MarketInfo. ....)。
原因: