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

 

Реter Konow:

...

这并不是一个坏主意。

但是,它给了我们什么?

也许我们可以减少CPU负载,释放线程。如果我们有10个EA副本在10个对上运行,并且我们给每个引擎加载GUI,那么总的CPU负载可能太多。因为每个GUI都需要重新绘制元素,这对CPU来说是一个沉重的负担。但事实上,我们只能看到一个副本的具体图形用户界面。其他的都被隐藏起来了

所以这可能是正确的方法。做一个共同的引擎。

在MT5中,图表可以被分离。然后你必须重新想出这个概念。

 
Konow注册

每个EA都有自己的参数内核副本。它可以暂时与普通GUI断开连接,另一个EA可以连接到引擎。重要的是,它们是同一个EA的副本。

然而,有一些困难,我自己还没有完全理解。

从理论上讲,这个问题听起来像这样。

如果我们可以制作一个具有共同GUI的引擎,并将其连接到所有的EA副本,为什么我们需要为EA副本的每个图表添加一个具有GUI的引擎?

在实践中,我们会遇到一些技术困难。

专家顾问副本可以向其参数内核副本写入新值。如果其中一个副本没有连接到引擎,内核将只在副本的一侧改变。因此,当重新连接时,我们必须将整个内核传递给引擎,引擎将在需要的地方重新绘制所有窗口中的所有元素。这在原则上是可能的。

或者重新做参数内核本身,使其成为一种资源。在这种情况下,引擎将一次获得所有的变化,并只是重新绘制元素。这并不是一个坏主意。

但是,它给了我们什么?

也许我们可以减少CPU负载,释放线程。如果我们有10个EA副本在10个对上运行,并且我们给每个引擎加载GUI,那么总的CPU负载可能太多。因为每个GUI都需要重新绘制元素,这对CPU来说是一个沉重的负担。但事实上,我们只能看到一个副本的具体图形用户界面。其他的都被隐藏起来了。

所以这可能是正确的方法。做一个共同的引擎。

让EA副本频繁地告诉引擎他们的地址。一个短字符串。引擎将对与其当前地址相同的副本作出反应并进行 "对话"。将进行标准交换。如果引擎中的地址发生变化,它就开始与设置匹配地址的副本进行 "交换"。对标准交换到'乙醚'添加顾问或指标,以暴露其短地址。几个字节。当用户在引擎GUI上按下 "重新配置 "按钮时,"监听引擎地址 "功能就会启动。也许是这样的。

 
Artyom Trishkin:

在MT5中,你可以将图表分离出来。然后你必须重新想出这个概念。

我只是没有意识到这一点。图表是纯粹的 "地域性 "分离,它变得脱离了主终端窗口的坐标?在交换流中,它是否仍然与终端完全连接?

 
Oleg Papkov:

我只是没有意识到这一点。图表是纯粹的 "地域性 "分离,它变得脱离了主终端窗口的坐标?而在与终端的交换流中,它仍然与终端完全连接?

图表是分离的,但它并没有改变本质。(他们是在白白地制造混乱)。为EA的每个副本制作图形用户界面的副本是没有意义的。反正我看不出来。但如果能在副本的图表之间移动一个GUI,那就太好了。

如果有一个EA拷贝控制中心 图,上面有引擎主GUI 的位置,那就很方便了。

在制作EA的图形用户界面时,应考虑到该EA将有许多副本放在不同的工具上。


图表保持在同一窗口中,只有窗口本身可以被 "取出",从终端取出。

 
Oleg Papkov:

让顾问的副本以频率告诉引擎他们的地址。一个短字符串。引擎将对与其当前地址相同的副本作出反应并进行 "对话"。将进行标准交换。如果引擎中的地址发生变化,它就开始与设置匹配地址的副本进行 "交换"。对标准交换到'乙醚'添加顾问或指标,以暴露其短地址。几个字节。当用户在引擎GUI上按下 "重新配置 "按钮时,"监听引擎地址 "功能就会启动。也许它是这样的。

你正确地看到了本质。只是细节不准确。

切换 "通信 "本身并不是一个问题。但是,在切换时,你必须重新初始化整个GUI。毕竟,在窗口和元素的不同副本,不同的值。因此,有必要重新绘制几乎所有的东西。

每个副本的参数值都存储在参数内核中。这是一个数组。只要副本与引擎断开连接,数值的变化将只发生在专家顾问的参数内核副本中。一旦发动机被连接起来,所有的东西都必须从这个内核转移到它身上。同步引擎和连接的专家顾问中的参数内核的副本。因此,你需要转移大量的信息(参数核心),并重新绘制窗口。之后,就可以调整所连接的专家顾问,其他的将进入独立模式。然后与他们建立联系,同样的事情就会发生。

它将是这样的。然而,有很多技术上的细微差别。

 
彼得。在N毫秒的周期内,EA从引擎接收一些东西,之后将其准备好的东西传递给引擎。然后,顾问等待嘀嗒声的到来或新一批的重新询问-交换。对吗?
 
Oleg Papkov:
彼得。在N毫秒的周期内,EA从引擎接收一些东西,之后将其准备好的东西传递给引擎。之后,EA等待嘀嗒声的到来或新一批的询问-交流声。对吗?

几乎没错。交流和对抽搐或其他事件的预期是异步进行的。

 
Реter Konow:

时间表是脱离的,但这并不改变重点。这是 在浪费时间)。

...

图表保持在同一窗口中,只有窗口本身可以 从终端"取出"

根据你的概念,每次只有一个当前的图表是可见的,而且只有它可以被更新,这将被打破--有多少图表可见,就有多少图表被分离。

当然不是恶梦,但也不是好事--只有一个可见的图表会 "活着",其余的呢?

你认为这正常吗?好吧,如果是这样的话,我再一次确信在解决bug方面缺乏严肃性--如果有的话,不是为了修复它,而是为了隐藏它。

 
Реter Konow:

几乎没错。通信和等待勾选或其他事件是异步发生的。

这样吧。顾问,每个都有频繁的一些(OnTimer),向引擎发送其代码字符串。所有的代码行都是不同的。该引擎在内部分析传入的字符串并 "识别 "出一个,例如来自3号专家顾问的字符串。作为对该EA的回应,它发出了一个 "信号",以启动主传输。该引擎与该专家顾问一起工作。
如果一个人按下开关按钮,引擎将分析允许的顾问,他们被索引,在数字下。告诉当前的EA切换到设置地址的状态,就像从工作流程中关闭它一样,它选择一个索引多1的代码串,并等待其他任何EA的相同代码串的到来。当地址匹配时,它向专家顾问发出信号,停止暴露地址并开始交换。唯一的专家顾问和复制系列,不在计费模式下,将收到交换。简而言之,就是类似的东西。

如果引擎收到一个地址,它会做一个超时处理,以禁止接收地址。这样,地址就不会重叠了。

 
Oleg Papkov:

这样吧。专家顾问,每个都有某种频率(OnTimer),向引擎发送自己的代码字符串。所有的代码行都是不同的。该引擎在内部分析传入的字符串并 "识别 "出一个,例如来自3号专家顾问的字符串。作为对该EA的回应,它发出了一个 "信号",以启动主传输。该引擎与该专家顾问一起工作。
如果一个人按下开关按钮,引擎将分析允许的顾问,他们被索引,在数字下。告诉当前的EA切换到设置地址的状态,就像从工作流程中关闭它一样,它选择一个索引多1的代码串,并等待其他任何EA的相同代码串的到来。当地址匹配时,它向该专家顾问发出信号,停止暴露地址并开始交换。唯一的专家顾问和复制系列,不在计费模式中,将收到交换。简而言之,就是类似的东西。

如果引擎收到了一个地址,它将会超过地址抑制的时间。这样,地址就不会重叠了。

这不是正确的做法。让我解释一下。

EA的每个副本都不会停止在自己的独立资源中向引擎写入其信息。同时,专家顾问的每个副本在 内核参数的副本中初始化自己的元素值。也就是说,即使与引擎断开连接,所有的EA副本都应该正常工作。

当引擎在EA的副本之间切换连接时,它必须将其内核参数与所连接的EA的内核同步。之后,重新绘制窗口中的元素,使其显示实际信息。

至于与所选专家顾问的沟通,一切都很简单。从引擎接收信息的资源(也是引擎的信息资源),每个EA都会有自己的。也就是说,引擎将简单地在其他资源中记录其信息,并从其他资源中读取信息。该资源属于相连的EA。

原因: