文章 "轻松快捷开发 MetaTrader 程序的函数库(第十七部分):函数库对象之间的交互" - 页 3

 
Artyom Trishkin:

可以获得顺序属性。还可以获取头寸属性。从头寸属性中,您可以获得从交易订单到平仓的全部历史记录。头寸的每笔交易都可以让您知道用来达成交易的订单。一般来说,任何头寸的全部历史都可以轻松获取,所有订单和交易都可以在其中找到。

好极了!

我知道您知道 MT5 订单系统是如何组织的(不幸的是,本论坛上几乎没有人知道这些信息)。

请告诉我可以找到这些资料的文章编号。

 
Igor Makanu:

好极了

这是我学习的必备材料,我知道您了解 MT5 订单系统的工作原理(不幸的是,本论坛上几乎没有人了解这方面的信息)

请告诉我在哪里可以找到这份资料。

第一部分 讲述了库的一般结构(与描述的几乎相同,但在讲述过程中进行了改进)。

第二部分 开始创建订单和头寸集合。第四部分 开始讨论交易事件....。所有这些一直延伸到第九篇,在这里开始最终完成与 MQL4 的兼容。

 
Artyom Trishkin:

超现实主义,彼得,只存在于你的脑海中--在这里,一切都是有条理的,而且很容易....

你的阐述过于深奥,忘记了建立这样一个 "理想方案 "的实用性。 下面是一些引文:

"今天,我们将更进一步,赋予这个对象,以及库中的任何其他对象,设置哪些属性的变化将受外部控制、受控变化的大小以及对象属性值受控水平的大小的能力。"

请考虑这一点:"......受控变化的大小和对象属性值受控水平的大小" 什么是 "对象属性值的受控水平的大小"?即 1.对象有一个属性。2.该属性有一个受控值水平。3.受控级别有 n 个值,....。4.受控变化的大小也可能不同。这样看来,实体的数量是不是太多了?这只是您文章中哲学海洋中的一滴水。

还有

"因此,这里适合控制对象属性状态的变化:整数和实数--它们在每个继承类中的列表都是唯一的,并将代表事件标识符。我们还需要考虑属性变化的方向--属性值的增加或减少--我们称之为事件起因,以及 对象 属性发生变化的值。事件标识符、事件起因和变化值将记录在对象基本事件的一个简单类中,并存储在同时发生的事件列表中。"

让我们列出找到的实体:

1."对象属性状态的变化"。也就是说,有属性就有对象的属性状态。从表面上看,属性状态指的是它的值。但值 可以表示为一个对象,其属性就是对象类型。我们将属性状态(值)分为整数和实数。然后,还引用了该类后继对象的整数和实数属性状态的某个唯一列表(我不知道具体是什么时候出现的)。

2."属性的变化方向"很明显,值的增减是变化的方向。但为什么变化方向 是事件的起因呢?原则上,方向的变化 是事件的原因,而不是方向本身。

3. "我们将把事件标识符、事件起因和变化值写入对象的基本事件的简单类中,并将其保存在同时发生的事件列表中。

这太不可思议了。有一个事件标识符。很好。有事件的起因和某物的变化量(只是抽象的变化量),很好。但还有一个简单的基本事件类!我重复一遍:一个简单的基本事件类!从抽象中抽象。事件 作为 事物本身, 已经找到了自己的类!但它只是一个对象事件。因此,可以有属性事件、值级事件(属性状态)。

还有最重要的一点

4."并存储在同时发生的事件列表中" 也就是说,同时发生的事件也有一个列表。为什么不呢?但是,应该有一个相对于其他事件具有可控时间差的事件列表。我们可以加上这个,不是吗?)

这只是这一系列大文章中的一个小片段。你认为这很简单吗?))我将把您的文章作为一个本应成为哲学家的人的有趣的方案实验来研究。)

 
Реter Konow:

您的阐述过于深入哲学,忘记了构建这样一个 "理想方案 "的实用性:

"今天,我们将更进一步,赋予这个对象(以及库中的其他对象)设置哪些属性的变化将受外部控制、受控变化的大小以及对象属性值受控水平的大小的能力。"

请考虑这一点:"......受控变化的大小和对象属性值受控水平的大小" 什么是 "对象属性值的受控水平的大小"?我的意思是:1.对象有一个属性。2.该属性有一个受控值水平。3.受控级别有 n 个值,....。4.受控变化的大小也可能不同。这样看来,实体的数量是不是太多了?这只是您文章中哲学海洋中的一滴水。

更进一步:

"这就是为什么控制对象属性状态的变化是合适的:整数和实数--它们在每个继承类中的列表都是唯一的,并将代表事件标识符。我们还需要考虑属性变化的方向--属性值的增加或减少--我们称之为事件原因,以及 对象 属性发生变化的值。事件标识符、事件起因和变化值将记录在对象基本事件的一个简单类中,并存储在同时发生的事件列表中。"

让我们列出找到的实体:

1."物体属性状态的变化"。也就是说,物体有属性,属性也有状态。显然,属性的状态指的是它的值。但值 可以表示为一个对象,其属性就是对象类型。你可以把属性状态(值)分为整数和实数。然后,还引用了某个唯一的列表(我不知道它是什么时候出现的),其中列出了类继承者对象属性的整数和实数状态。

2."属性的变化方向"很明显,值的增减就是变化的方向。但为什么变化方向 是事件的原因呢?原则上,方向的变化 才是事件的起因,而不是方向本身。

3. "事件的标识符、起因和变化值将记录在对象的基本事件的简单类中,并存储在同时发生 的事件列表中"

这太神奇了。有一个事件标识符。很好。有事件的起因和某物的变化量(只是抽象的变化量),很好。但还有一个简单的基本事件类!我重复一遍:一个简单的基本事件类!从抽象中抽象。事件 作为 事物本身, 已经找到了自己的类!但它只是一个对象事件。因此,可以有属性事件、值级事件(属性状态)。

还有蛋糕上的樱桃

4."并存储在同时发生的事件列表中" 所以也有一个同时发生的事件列表。为什么不呢?但是,应该有一个相对于其他事件具有可控时间差的事件列表。你可以添加它,对吗?)

这只是该系列中一篇大文章的一小部分。你认为这很简单吗?))我将把您的文章作为一个本应成为哲学家的人的有趣的方案实验来研究。)

在你的脑子里,一切都多么复杂:D

你自己创造了复杂性。

也许我不善于解释,但是....。

我们有价格。价格是一个符号的属性。价格具有变化的能力。它可以朝上涨或下跌的方向变化。我们有权控制和设定价格的涨跌幅度(这就是 "控制变化的 幅度")。此外,价格还可以越过设定值(由我们在程序中控制),我们也可以对其进行设置 - 这就是 "对象属性值的受控水平大小"。

清楚了吗?

我们有一个价差。价差是一个符号的属性。价差有可能发生变化。要么增大,要么减小。大小(我们有权控制和设定点差增加或减少的幅度,这就是 "控制变化的大小")。此外,价差还可以越过设定值(由我们在程序中控制),我们也可以对其进行设置 - 这就是 "受控对象属性值水平的大小"。

明白了吗?

这只是同一个对象(一个符号)的两个不同属性。就让它成为当前的符号吧。虽然它们可以是不同符号(对象)的属性,但同一类型对象的属性是相同的。对同一类型对象的同一属性的控制也是一样的。当然可以。因为它是在一个基本对象中执行的,所有对象都继承了这个基本对象--这是它们的基础。它对所有对象都是一样的--不是对所有对象都一样,但都是一样的。

因此:同一个对象的不同属性可以用不同的方法来控制--你可以为每个属性创建控制方法--为每个属性写一个控制方法并以此为基础。或者,您也可以编写一个方法来控制任何对象的所有属性,而不必为每个属性编写大量代码,只需为所有属性编写一个方法即可。
当对象在自己的事件列表中记录了自己的事件后(这些事件被称为基本事件--绝对每个对象都有这些事件),程序就会发送事件--用户已经可以处理并做出决定的成熟事件。而且要描述得毫不含糊。为此有三个参数:

  1. 对象类型(object type)--这是我们检查某些属性状态的集合的标识符。比方说,这是一个符号集合,因此第一个数字是符号集合的标识符,表示我们正在检查符号对象的某些属性是否发生变化。
  2. 事件的起因是导致对象注册事件的原因--属性值增加或减少了我们所控制的数量(例如,点差增加了 2 点以上),或者价格越过了我们所控制的水平--价格变得低于我们所控制的水平,我们可以向用户发送一个事件,我们可以购买....。
  3. 发生事件的属性 - 有许多属性,要知道哪个属性产生了事件,我们需要在对象属性列表中获取其编号。

一句话:我们可以确定:(1) 是该符号向我们发送了事件;(2) - 该属性小于控制水平;(3) - 该属性是买入价。

复杂吗?别瞎编了--很简单。

然后,咣当:

我们有了交易许可。交易许可是账户的一项属性。交易权限可以更改。它由几个值组成。大小(我们有权控制和设置交易许可变化的值,即 "控制变化的大小")。此外,交易许可还可以跨越设定(由我们在程序中控制)值,我们也可以设定 - 这是 "对象属性值的受控水平大小",例如 - 禁止开仓买入。

毕竟,这是一个完全不同的对象,它将向程序发送与建立事件的符号相同的代码。所有这些都将通过一个对象--所有对象的基础--的相同方法完成。

明白了吗?

总的来说,文章中已经描述了一切。但你似乎只是在开玩笑?:)要问这样的问题,你应该以 "这里的一切是如何运行的 "的态度来阅读,而不是深入研究简单的数据组织。

 
Artyom Trishkin:
...复杂?别瞎编 - 这很简单....

文章作者的一个典型错误就是认为,如果材料对他们来说是清楚的,那么对所有人来说也是清楚的)。但事实并非如此。

你现在的解释把很多事情都说清楚了,如果你把它放在文章里(比如开头),就会更清楚。我不是在耍你。只是当抽象(尽管是合理和必要的)的流动没有与具体相混合,当它们没有相互参照和解释时(抽象开始占上风),就会出现像我上面表达的观点。

S.F. 一般来说,我的理解是,在这个资料库中,您试图概括和收集算法交易中的一切。

 
Реter Konow:

文章作者的一个典型错误就是认为,如果材料对他们来说是清楚的,那么对所有人来说也是清楚的)。但事实并非如此。

你现在的解释把很多事情都说清楚了,如果你把它放在文章里(比如开头),就会更清楚。我不是在耍你。只是,当抽象的东西(尽管是合理和必要的)没有与具体的东西混合在一起,当它们没有相互参照和解释时(抽象的东西开始占主导地位),就会产生像我上面表达的那些观点。

S.F. 一般来说,据我所知,在这个资料库中,您试图概括和收集算法交易中的所有内容。

我想做的只是给人们提供一个工具,方便他们创建任何算法复杂度的程序。

程序库只需处理所有必须自己编写的例程。

用户只需 "提出问题--得到答案--进行处理"。

而程序库本身会对事件进行提醒。也就是说,原则上只需查看是哪种事件,来自哪个对象,然后根据构想的逻辑进行处理即可。

用户可以询问最后一个位置是如何关闭的--他将得到一个答案--然后根据他的逻辑....。

或者,他可以询问最后一个关闭的位置,然后根据其组成部分进行解析 - 库允许从库数据中获取用户所采取的任何位置的所有数据。

或者也可以这样做:程序会收到这样一个事件,即在这样一个符号上打开/关闭了这样一个仓位,或者设置/删除了这样一个订单。如果程序必须跟踪别人对交易的干预,这条信息就会告诉它--程序没有发送任何请求,但环境发生了变化--它必须被处理。

原则上,你可以想出并实现很多东西--我试图为此提供所有可能的工具。自动工具--一切都已经存在,你不需要自己发明--只需准备好并仔细给出即可;)。

 
Реter Konow:

文章作者的一个典型错误就是认为,如果材料对他们来说是清楚的,那么对所有人来说也是清楚的)。但事实并非如此。

...

一些读者的典型错误是,他们不阅读,而是立即提问:)

如果你从第一篇文章开始阅读,就不会有这样的问题,因为整个 "哲学 "就在那里,而且已经解释清楚了。

 

Artem,谢谢你!

别停,别停,继续写--结果会很好的。

我饶有兴趣地阅读了您与彼得的讨论。非常正确,切中要害。

我已经给 AMD 写了一封信--虽然我不参与处理器的设计 和制造,但是,伙计们,你们在 8 纳米工艺上做了无稽之谈....。

我在等待回复

 
Реter Konow:

您的阐述过于深奥,忘记了构建这种 "理想方案 "的实用性......。

这里的哲学是:归纳法(从特殊到一般)或演绎法(从一般到特殊)。

阿尔乔姆使用的是归纳法。

科长:格列布-格奥尔基耶维奇,有一颗子弹。您的判断

热格洛夫:嗯,你说什么,"智慧"?

沙拉波夫这颗子弹就像一颗子弹,普通的,手枪子弹....。

热格洛夫:是的,最好能找到弹壳。

科长:最好还是看看武器本身。

热格洛夫:没错,是这样的:子弹是从进口的 巴亚尔或欧米茄系统的 6.35 口径武器上发射的。

科长:那是什么意思?

子弹,谢尔盖-伊帕蒂奇,子弹。左侧有六个垂直的膛线切口,就是这样--笔迹相当 "独立"。

科长:你怎么看?从标记上看,弹壳是我们的,国产的。

热格洛夫:是的,在哪儿找到的?

科长:在应该在的地方。在尸体左边。反光镜工作正常。

是的 弹壳是我们的嗯好吧,我们把它放在谜语里。我们还得找武器娜杰日达 你知道房子里有武器吗

不知道

[温纳斯 仁慈时代]

 
Aleksei Mikhanoshin:

Artem, thank you!

不要停,继续写--你做得很好。

我饶有兴趣地阅读了您与彼得的讨论。非常正确,切中要害。

我给 AMD 写过一封信,--我不参与处理器的设计和生产,但是,伙计们,你们对 8 纳米工艺的争论是无稽之谈....。

我在等待回复

你好,阿列克谢。

为什么要止步于旅程的起点?所有思考的起点都已经到了,现在只能在颠簸中前行;)

AMD 是怎么回答你的?