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

 
如果直接目的是实现一个简单的追踪止损,你应该继续编写脚本,加入for和while循环。

我不确定 "足够的耐心 "这个脚本是否有逻辑上的延伸。也许更好的办法是转到一个需要有的新想法上。

1.一个if-else条件树。
2.计算功能。
3.循环。

由于我们将不得不在算法交易领域工作,如果脚本与交易策略有关会更方便。想一想吧。

 
为了更好地理解循环。

循环允许你一次又一次地将一段代码封闭在其主体中。每次传递的结果都会与其他传递的结果不同,因为每次传递的变量/调用的函数值可能不同。循环迭代的次数是由程序员、变量或函数的值决定的--这取决于具体代码。
 
MrBrooklin:

阿列克谢,你在开玩笑吗?是的,我想先学好基础知识!

尊敬的弗拉基米尔。


不是很多。从动态和你的基础来看,理论和实践--从头到尾都是你的资料。那么,为什么不...不是现在,而是以后...当你掌握了它的窍门,并与代码有了第一人称的关系。
 
Реter Konow:
如果你的直接目标是实现一个简单的追踪止损,继续编写脚本,加入for和while循环。

我不确定 "足够的耐心 "这个脚本是否有逻辑上的延伸。也许更好的办法是转到一个需要有的新想法上。

1.一个if-else条件树。
2.计算功能。
3.循环。

由于我们将不得不在算法交易领域工作,如果脚本与交易策略有关会更方便。想一想吧。

谢谢你,彼得,支持我为New7.mq5脚本配备追踪止损的意图,尤其是现在,我已经开始研究周期。顺便说一下,我已经试过了脚本中的 "睡眠"功能。建议在编写追踪止损时使用这个函数。我从哪里开始呢?也许,先用文字描述整个尾随止损的算法,然后再继续写代码会更好?

真诚的,弗拉基米尔。

 
Aleksey Masterov:

不多。从动态和你的基础以及理论和实践来看,从头到尾都是你的资料。那么,为什么不...不是现在,而是以后...当你掌握了它的窍门,并与之建立联系时,

谢谢你,阿列克谢,感谢你对我的信任。我所要做的就是继续保持良好的工作!

真诚的,弗拉基米尔。

 
MrBrooklin:

谢谢你,彼得,支持我为New7.mq5脚本配备跟踪止损的愿望,特别是现在,当我开始研究周期时。顺便说一下,我已经试过了脚本中的 "睡眠"功能。建议在编写追踪止损时使用这个函数。我从哪里开始呢?也许,先用文字描述整个尾随止损的算法,然后再继续写代码会更好?

真诚的,弗拉基米尔。

客观地说,简单的追踪止损是不能写在脚本中的。让我解释一下:跟踪止损本身并不存在于 "真空 "中,它们 "绑 "在一个未结头寸上,而这个头寸又 "绑 "在一个策略上,而这个策略只在EA中实施。

脚本中跟踪的问题和复杂性在于,你需要在循环中收集关于未结头寸及其订单的信息,然后在所需的符号上选择所需的订单并计算其修改。这很复杂,也很混乱,但对于EA来说,一切都要简单得多。首先,你已经知道要修改哪个顺序,其次,你会知道何时修改,因为OnTick事件来了。

因此,你在脚本中放入一个 "订单待定",然后它就会触发,开出头寸,并可以设置止损......你为此需要什么。

1.循环脚本。
2.在文字符号上写出价格变化事件固定的功能。
3.写止损单的修改功能。
4.写下平仓时脚本卸载(从无环循环中退出)的条件。

我已经大致勾勒出了剧本的轮廓,但我需要更认真地思考一下。

P.S. 睡眠功能是用来在需要时延迟代码的执行。例如,在向服务器发出请求或等待一个事件时。在尾随的脚本中,肯定需要这个函数。
 
Реter Konow:
程序员们害怕使用全局变量,因为在改变其数值时,会发生错误。这就造成了一种错误难以定位的情况,因为每个函数都可以改变它们。当然,只有那些变量必须存在于全局范围内,所有的程序函数都必须看到这些变量。不可能是别的。

我一直喜欢使用全局变量,因为它们提供了快速增长的功能,程序变成了一个巨大的、活跃的施工现场。我经常因为写代码的方式而受到批评,但这就是为什么它是一个建筑工地:在基本的建筑工作完成后,它被清理掉了,当房子建成后,你可以开始贴瓷砖、刷油漆和清理。在这之前,首要任务是组装模板和浇筑混凝土)。

然而,程序员的思维方式不同。他们会 "清理 "和 "擦洗 "他们的代码,即使是两行半的代码。他们会擦洗他们的代码,即使它有两行半长,但它会像......像一个新硬币一样闪闪发光)。这种对代码的态度在他们赖以生存的职业中是合理的,但从创造性的角度来看,他们是僵硬的,发展得很差。这就是事实...

我的建议是:学习正确的写作,但有时允许自己脱离规则,进行实验,以获得更多的经验。这将有助于你的学习,你会学得更快。

有一种观察认为,一旦你开始拄拐杖,就很难停下来,结果是项目代码变成了他们所说的dre...代码。

让我解释一下。

  1. 你有一个具有中间工作解决方案的项目,并且实现的功能数量为0。
  2. 我们的任务是实现++计数功能。
  3. 为了增加我们需要的功能。
    • 编写对象树的方法,并将所有这些东西与事件处理程序用逻辑连接起来(估计时间为3小时*计数;计数=0)。
    • 全局变量 的形式编写一个拐杖,并在几个方法中使用它,在我们需要它的地方(估计时间为15分钟*计数。)
  4. 自动编号的错误 (这是一个关于元引号的错误报告)。
  5. 自然而然地,选择了拐杖版本(在这种情况下,真的很难让我们自己工作)。
  6. 如果(我们做到了),则转到2
  7. 否则一切都会变成地狱,大喊救命,并读到搞笑的评论,说这样做是错误的。

我希望你注意到这样一个事实,即已实现的功能的计数器会增加下一个功能的实施时间,但当正确实施时,它就会重置为零?

这是一个非常夸张的想法,但在现实生活中就是这样的。

我的意思是,如果你不在实现所有功能后重写项目,它将作为一个不可读的破坏者进入生产。然后,任何项目的生命周期都会导致管理层头疼:要么让整个团队对所有那些被剥离的东西进行全面重构(竞争对手不睡觉,他们,邪恶的家伙,写新的功能),要么继续写拐杖和修补错误,暴漏。

 
Реter Konow:
客观地说,简单的追踪止损在脚本中是行不通的。让我解释一下:跟踪止损本身并不存在于 "真空 "中,它们被 "绑定 "在一个未结头寸上,而这个头寸又被 "绑定 "在一个策略上,而这个策略只在专家顾问中实施。

在脚本中实现跟踪的问题和复杂性在于,你需要在循环中收集关于未结头寸及其订单的信息,然后在正确的符号上选择正确的订单,并计算如何修改它。这很复杂,也很混乱,但对于EA来说,一切都要简单得多。首先,你已经知道要修改哪个顺序,其次,你会知道何时修改,因为OnTick事件来了。

因此,你在脚本中放入一个 "待处理订单",然后它被触发,一个头寸被打开,你可以跟踪停止。你为此需要什么。

1.我想循环使用这个脚本。
2.价格变化事件对符号的固定功能。
3.修改止损单的写入功能。
4.写出关闭位置时脚本卸载的条件(从循环中退出)。

我已经大致勾勒出了剧本的轮廓,但我需要更认真地思考一下。

P.S. 睡眠功能是用来在需要时延迟代码的执行。例如,在向服务器发出请求或等待一个事件时。在尾随的脚本中,肯定需要这个函数。

彼得,我们是否在脚本中创建尾部代码?很完美!现在我把你列出的基本部分,开始用文字描述出来,这样我就清楚以后应该如何写函数、循环等。这是否正确?

问候,弗拉基米尔。

 
MrBrooklin:

彼得,所以我们在脚本中创建尾部代码?很好!你所列举的内容,我现在把它作为基本部分,开始用文字描述,这样就可以清楚地知道以后如何写函数、循环等。这是否正确?

问候,弗拉基米尔。

是的,正确。
 
Vladimir Simakov:

有一种观察认为,一旦你开始紧缩,就很难停止,结果是项目代码变成了所谓的D.C。

让我解释一下。

  1. 你有一个具有中间工作解决方案的项目,并且实现的功能数量为0。
  2. 我们的任务是实现++计数功能。
  3. 为了增加我们需要的功能。
    • 编写对象树的方法,并将所有这些东西与事件处理程序用逻辑连接起来(估计时间为3小时*计数;计数=0)。
    • 全局变量 的形式编写一个拐杖,并在几个方法中使用它,在我们需要它的地方(估计时间为15分钟*计数。)
  4. 自动编号的错误 (这是一个关于元引号的错误报告)。
  5. 自然而然地,我们选择了一根拐杖(在这种情况下,真的很难让自己工作)。
  6. 如果(我们做到了),则转到2
  7. 否则一切都会变成地狱,大喊救命,并读到搞笑的评论,说这样做是错误的。

我希望你注意到这样一个事实,即已实现的功能的计数器会增加下一个功能的实施时间,但当正确实施时,它就会重置为零?

这是一个非常夸张的想法,但在现实生活中就是这样的。

我的意思是,如果你不在实现所有功能后重写项目,它将作为一个不可读的破坏者进入生产。然后,任何项目的生命周期都会导致管理层的头痛:要么让整个团队对所有那些他们已经旋转的东西进行全局重构(而竞争对手是清醒的,他们,邪恶的家伙,正在写新的功能),要么继续写拐杖和修补错误,以洪流的方式泄漏。

尽管这条信息主要是写给彼得的,但我请你不要用任何俚语来写,以便充分理解你的信息,用编程学校一年级学生可以理解的语言来写,因为这个话题是为初学者准备的。

问候,弗拉基米尔。