我的方法。核心是引擎。 - 页 139

 
Georgiy Merts:

你们这些人都在说服彼得相信OOP的好处吗?

阿尔乔姆-特里什金

你这是在浪费口水。

你们是对的,我知道这一切,我非常理解。但显然彼得用他的 "我不想要,我不愿意 "触动了我的OOP灵魂的精神之弦,所以我不断陷入这些无休止的解释、争论和争吵中。

 
Реter Konow:

而引擎将从一个文本文件中加载内核。这并不难做到。

哦,我明白了。是的,这就好了。所以你的内核是一个文本文件--基本上是一组引擎的设置。

 
Реter Konow:

不,瓦西里,你倾向于把一切都戏剧化。)

构造函数中有一个按钮,点击后会打印出所有的文件。

而引擎将从一个文本文件中加载内核。这并不难做到。

抱歉打断一下,但只是想知道--重构应该怎么做? 例如,改变不好的名字或一般的元素组成/位置。

 
Vasiliy Sokolov:

哦,我明白了。是的,这就好了。所以你的内核是一个文本文件--基本上是一组引擎的设置。

是的,完全正确。引擎需要的所有信息,以重现一个特定的GUI,并与之配合工作。现在我正在把它直接安装到引擎上,然后我将使它可以从建造者打印的文件中加载。

 
Maxim Kuznetsov:

抱歉打断一下,但我想知道--重构应该如何进行? 例如,改变不好的名称或一般元素的组成/位置。

这都是在构造函数中。KIB代码被写入,文件被重新编译。

下面是如何使用构造器的方法https://www.mql5.com/ru/blogs/post/717782

 
Vasiliy Sokolov:

或者另一个例子。最近,我被要求修改一个程序化的专家顾问,以便它能在几个符号上同时交易(在一个图表上运行)。程序化的风格将需要长期和复杂的努力,使其在同一时间在不同的符号上独立交易。相比之下,我只是将整个程序性代码放在一个类中,并创建了三个示例。我为他们每个人指定了一套单独的设置,包括工作符号等等。这段代码在第一次尝试时就发挥了它应有的作用。用户很满意。

本周我遇到了一个类似的例子,有人要求我做一个专家顾问,在一个TF的开盘时买入,在另一个TF的开盘时卖出)。

但我重写了一个琐碎的函数来定义一个新条形,并创建了2个实例来定义一个新条形。 在构造函数的初始化过程中,我把TF的时间框架作为一个参数传给了他。

5分钟的工作,但可以保证一切正常,不会出现函数NewBar_TF1()、NewBar_TF2()名称混乱的情况 ....就像在用户改变设置后初始化一样方便 - 在DeInit()中删除对象,在ONInit()中创建对象。

我认为,OOP是方便和实用的

 
Реter Konow:

这都是在构造函数中。KIB代码被写入,文件被重新编译。

下面是如何使用构造器的方法https://www.mql5.com/ru/blogs/post/717782

但它会覆盖事件中的所有自定义编辑和绑定?
 
Реter Konow:

是的,完全正确...

这就是为什么你的引擎与别人的引擎有很多混淆的地方。给你的系统中的元素起非标准的名字。不是一个内核--而是一个自动生成的配置文件。

 
Maxim Kuznetsov:
但它会覆盖所有在事件中的用户编辑?

进一步解释一下。

 
Vasiliy Sokolov:

这就是为什么你的引擎会有很多混乱,以及为什么其他人会感到困惑。给你的系统中的元素起非标准的名字。不是内核--而是一个自动生成的设置文件。

所以这个文件,就是打印出来的内核。不止一个。

原因: