文章 "自己动手开发多线程异步 MQL5 WebRequest" - 页 5

 

尝试禁用防火墙和后卫,结果相同。

Win 10 家庭版。没有杀毒软件,因为我 "对连接很挑剔"。

 

下午好、

这篇文章非常有趣。

请允许我抛砖引玉:....

由于开发人员引入了大量日历功能,对 http 请求的需求变得越来越少(我不认为其他数据请求被广泛使用)。我主要感兴趣的是并行运行优化算法的可能性(定期、按缩减参数等,这并不重要)。

如果可能,您能否回答这种机制(在单独的线程中执行)在服务上是否可行?

敬请关注作者所做的工作

 
Олег Миронов:

由于开发人员引入了大量日历功能,对 http 请求的需求变得越来越少(我认为其他数据请求并未被广泛使用)。我主要感兴趣的是并行运行优化算法的可能性(定期、按缩减参数等,这并不重要)。

如果可能,您能否回答这种机制(在单独的线程中执行)在服务上是否可行?

内置日历非常通用,因此仍有很多有用的配置文件信息需要从第三方来源下载。此外,不仅有新闻,还有信号、加密货币交易所的报价等。有一种想法是使用并行线程进行计算,而不是网络请求,但这种想法尚未实现。但我不太了解服务。您是指 MQL5 程序中的服务吗?MQ 没有为它们提供与其他程序的双向通信(不可能发送计算 "任务 "并获得结果)。因此这些服务被排除在外。

 

在代码库中发布了一个指标示例,该指标请求在专家计算器中进行长时间并行计算,这些计算会自动放置在当前图表(窗口)的图表对象中。

不带缓冲区的指标只是为了演示在其他线程中请求大量计算的可能性。专家顾问当然也可以这样做。要实现这一点,您需要在调用 MQL 程序和专家计算器方面编写自己的参数打包器和解包器。

代码库

带异步多线程计算的伪指示器演示

Stanislav Korotky, 2020.01.16 20:13

这是一个不含缓冲区的指标,演示了在托管工作者专家顾问的图表对象中进行并行多线程计算。

日志示例

1 个内核上的 4 个任务:

4 个任务在 1 个内核(线程)上执行

2 个内核 4 个任务(速度快 2 倍):

4 个任务在内核(线程)上执行

 
Stanislav Korotky:

在代码 库中 发布了 一个指标示例,该指标要求在 "智能交易系统"(Expert Advisor 中进行长时间并行计算,这些计算会自动放置在当前图表(窗口) 的图表对象中

不带缓冲区的指标只是为了演示在其他线程中请求大量计算的可能性。当然也可以通过 Expert Advisor 以这种方式实现。要实现这一点,您需要在调用 MQL 程序和专家计算器方面编写自己的参数打包器和解包器。


然后该指标也会被 EA 调用 :-)

 

启动终端时,Expert Advisor 会检查图表上是否存在全局变量,如果没有,则创建全局变量 并设置其编号。图表客户端向图表管理器发送信息。

然后用户关闭图表管理器窗口。客户端向不再存在的窗口发送请求。

换句话说,这篇文章忽略了更改图表管理器的问题。也就是说,只需关闭图表管理器,整个方案就会崩溃。

 
Алексей Барбашин:

启动终端时,Expert Advisor 会检查图表上是否存在全局变量,如果没有,则创建全局变量 并设置其编号。图表客户端向图表管理器发送信息。

然后用户关闭图表管理器窗口。客户端向不再存在的窗口发送请求。

换句话说,这篇文章忽略了更改图表管理器的问题。也就是说,只需关闭图表管理器,整个方案就会崩溃。

文章提出了一种技术及其最低限度的实现。检查所有可能的问题情况超出了文章的范围。客户端可通过图表 ID(可通过 pool.getManagerID 获取)检查图表是否存在。所有源代码都是开源的。

请注意,在开发文章中介绍的想法的过程中,开发了一种使用对象的简化多线程查询处理方案。这里提到的问题并不是 "设计 "造成的。本主题中还附有资料来源。因此建议使用它们。

 
Stanislav Korotky:

文章提出了该技术及其最低限度的实施。检查所有可能的问题情况超出了文章的范围。客户端可通过图表 ID(可通过 pool.getManagerID 获取)检查图表是否存在。所有源代码均已开源。

请注意,在开发文章中介绍的想法的过程中,开发了一种使用对象的简化多线程查询处理方案。上述问题并非 "设计 "所致。本主题中还附有资料来源。因此建议使用它们。

我看到了该主题的发展 ))但遗憾的是,"chart"(图表)对象只能在 MT5 中使用。

 
Stanislav Korotky:

内置日历比较笼统,因此仍有很多有用的个人资料信息需要从第三方来源下载。此外,不仅有新闻,还有信号和加密货币交易所的报价等。有一种想法是使用并行线程进行计算,而不是网络请求,但这种想法尚未实现。但我不太了解服务。您是指 MQL5 程序中的服务吗?MQ 没有为它们提供与其他程序的双向通信(不可能发送计算 "任务 "并获得结果)。因此这些服务被排除在外。

谢谢。您对服务的理解是正确的。专家计算器是直接答案。非常有趣。再次感谢您。
 
如果程序中使用了标准库(Include\Controls\)中的用户界面 元素,那么用户事件 的偏移量(输入 intMessageBroadcast)应该是多少?我如何才能知道?