关于OOP的一个应用

 

我正在给一个客户写一份顾问,情况如下。所有项目都没有明确的TOR,但有一些他想测试的想法。也就是说,这项工作更接近于研究。

他说,我都不知道该怎么做,有一些变体的输入,我想试试,我能做到吗?我将不得不写几个专家顾问的变体?而按数量计算的投入显然不能包含在一个函数中,它们应该由市场动态地诞生。换句话说,可能有1...N.我正在对情况进行简化描述。

让我们创建一个基类,所有的东西都保持不变,从这个类开始,我们将有行为改变的后裔。

- 那么什么是班级呢?

客户对MQL有一点了解,但不是一个程序员。我开始解释,但他并不理解。

我在网上找到了一张动物物种分类的图片。我说:让我们简化一下,假设所有的人都是相互演化而来的。

我说--我们的基础类将是古代鞭毛虫。有基本的功能,只是精华部分。而从它开始,我们会有原生动物、多细胞动物等。而每个子代将包含其父代的所有功能。

- 哦,我明白了!甚至哺乳动物也会有古代鞭毛虫的功能,我说的对吗?

- 是的,这就对了。

现在我在想,这种情况如何在测试器中得到最佳使用,该策略不是剥头皮的,也不是打勾的,对于测试器来说是合适的。也在可怕的谜语中,吸血者是谁 ))

班级

**

 
Alexey Volchanskiy:

...

我说--我们的基础类将是古代鞭毛虫。它有基本的功能,只是精华部分。从中我们将诞生原生动物、多细胞动物,等等。每个子代将包含其父代的所有功能。

...

不幸的是,继承的想法变成了一根有两头的棍子。你可能会无意中伤害自己。这就是为什么最好以非常有限的方式使用继承。
 
Vasiliy Sokolov:
不幸的是,继承的想法被证明是一把双刃剑。你可能会不小心把自己打晕。这就是为什么你最好以非常有限的方式使用继承。

这个EA可能有不超过两个继承链接。这张图片只是为了证明继承权。我自己不是一个复杂的追随者)但主神......。喜欢玩的人)))。

关于 "坨坨 "看标准库,那里相当深,特别是在Controls。

 
Alexey Volchanskiy:

这个EA可能有不超过两个继承链接。这张图片只是为了证明继承权。我自己不是一个复杂的追随者)但主神......。喜欢玩的人)))。

至于 "舔",看看标准库,那里是一个相当深的层次,特别是在Controls。

不幸的是,标准库并不是一个基准。有些课只是杰作,有些则是在不了解主题的情况下写的(可能是由不同的人写的)。
 
Vasiliy Sokolov:
不幸的是,继承的想法已经成为一把双刃剑。你可能会无意中伤害自己。这就是为什么你最好以非常有限的方式使用继承。

我可以给你一个 "扎西布 "的例子吗?

相反,我总是尽可能地使用继承和多态性。拥有虚拟函数 是非常方便的,可以根据需要对你创建的对象进行调用...

在有些情况下,所有的子代都带有祖先类的功能,而子代不再需要这些功能--但我认为这里没有任何特殊的问题。不要使用它,就是这样。我甚至没有说到受保护的继承,当类的用户--不能再引用祖先的功能,而且,在这里,很容易 "删除不必要的功能"。

 
George Merts:

我可以给你一个 "扎西布 "的例子吗?

相反,我总是尽可能地使用继承和多态性。拥有虚拟函数 是非常方便的,可以根据需要对创建的对象进行调用...

在有些情况下,所有的后裔都携带祖先类的功能,而后裔不再需要这些功能,但我认为这里没有任何特别的问题。不要使用它,就是这样。我甚至不谈受保护的继承,当类的用户--不能再引用祖先的函数,而且,在这里,"删除不必要的功能 "是非常容易的。

写得很好。我在这个项目中广泛使用虚拟函数,非常方便。子类有不同的 "行为",但有相同的接口。在MQL中,没有接口的概念,但要模仿它并不难。

我已经想到把所有子孙的实例放在一个数组中,并通过调用虚拟函数在一个循环中运行它们。并以某种方式选择最成功的信号,这一点我还没有想好。到目前为止,还不清楚如何确定这些信号是否是 "幸运 "的。因此,有机会通过调整以适应不断变化的市场,在飞行中进行优化。

我认为最好不要在工作的EA中这样做,而是在其小的修改中,至少在一个文件中与写信息并行工作,交换速度在这里并不重要。

"祖先类的功能,后代不再需要了"呢--没关系,反正这些功能在内存中是作为一个单一的副本存在的。当然,数据内存将被分配给每个实例,但现在有了几千兆的内存,这并不是很重要。

 
你最好描述一下ToR,因为不清楚你的意思,也不清楚班级与它有什么关系。
 
Alexey Volchanskiy:

我正在给一个客户写一份EA,情况如下。所有项目都没有明确的TOR,但有一些他想测试的想法。也就是说,这项工作更接近于研究。

他说,我都不知道该怎么做,有一些变体的输入,我想试试,我能做到吗?我将不得不写几个专家顾问的变体?而按数量计算的条目显然不能适合一个功能,它们应该按市场动态地诞生。换句话说,可能有1...N.我正在对情况进行简化描述。

让我们创建一个基类,所有的东西都保持不变,从这个类开始,我们将有行为改变的后裔。

- 那么什么是班级呢?

客户对MQL有一点了解,但不是一个程序员。我开始解释,但他并不理解。

我在网上找到了一张动物物种分类的图片。我说:让我们简化一下,假设所有的人都是相互演化而来的。

我说--我们的基础类将是古代鞭毛虫。有基本的功能,只是精华部分。而从它开始,我们会有原生动物、多细胞动物等。而每个子代将包含其父代的所有功能。

- 哦,我明白了!甚至哺乳动物也会有古代鞭毛虫的功能,我说的对吗?

- 是的,这就对了。

现在我在想,这种情况如何在测试器中得到最佳使用,该策略不是剥头皮的,也不是打勾的,对于测试器来说是合适的。也在可怕的谜语中,吸血者是谁 ))

**

如果你不知道他们想要什么,那么你可以要求他们手动完成。或者让他们手工测试他们不知道的东西......
 
Alexey Volchanskiy:

我正在给一个客户写一份EA,情况如下。所有项目都没有明确的TOR,但有一些他想测试的想法。也就是说,这项工作更接近于研究。

他说,我都不知道该怎么做,有一些变体的输入,我想试试,我能做到吗?我将不得不写几个专家顾问的变体?而按数量计算的条目显然不能适合一个功能,它们应该按市场动态地诞生。换句话说,可能有1...N.我正在对情况进行简化描述。

让我们创建一个基类,所有的东西都保持不变,从这个类开始,我们将有行为改变的后裔。

- 那么什么是班级呢?

客户对MQL有一点了解,但不是一个程序员。我开始解释,但他并不理解。

我在网上找到了一张动物物种分类的图片。我说:让我们简化一下,假设所有的人都是相互演化而来的。

我说--我们的基础类将是古代鞭毛虫。有基本的功能,只是精华部分。而从它开始,我们会有原生动物、多细胞动物等。而每个子代将包含其父代的所有功能。

- 哦,我明白了!甚至哺乳动物也会有古代鞭毛虫的功能,我说的对吗?

- 是的,这就对了。

现在我在想,这种情况如何在测试器中得到最佳使用,该策略不是剥头皮的,也不是打勾的,对于测试器来说是合适的。也在可怕的谜语中,吸血者是谁 ))

**

最主要的是它如何方便地使用。要尝试不同的输入,你可以通过输入组号批量进行。也就是说,有一个输入集的集合。如果方便的话,作为一个函数数组。最简单的是--无条件的按市场买入或卖出。或有条件的))。然后我们运行优化器,查看不同的条目集。
 
Alexey Busygin:
你最好描述一下你的ToR,因为不清楚你的意思,也不清楚班级与它有什么关系。

什么是职权范围--客户给我的职权范围?))你认为这在政治上正确吗?

还是对你来说有异国情调?还是对你来说是某种异国情调?对我来说,它是一个普通的工作工具。

 
Vladimir Pastushak:
应该让他们先决定自己想要什么,然后再提出要求......。或者让他们手工测试他们不知道的东西......
为什么不呢,我喜欢研究,尤其是有偿研究)