再一次,关于多线程 - 页 3

 
Renat:

我建议你重新阅读你的原帖,注意你所有的外号,然后到下面去看答案。

他们平静地给出了答案,并提出了一些软性问题,如 "要对某些东西进行并行计算,你必须首先意识到",然后给出了答案,并解释了目前的状况 "什么东西真正应该被并行化"。

但你没有快速学习,而是喷出更多的废话,把狗放在我们身上。结果是一个严厉的回应。

好吧,我同意你的外号,我确实有点过分,我为此道歉。虽然我没有说什么粗鲁的话,只是过于情绪化的批评,但与你的反应的严厉程度相比,完全不够。我没有说过开发商一无是处,什么都不懂,所以不要夸大其词。

既然我提出了这个话题,我很清楚需要做什么,有很多东西需要并行化。并非所有的算法都以 "hello world!"为限,还有更复杂和资源密集型的算法。这就是为什么在你还没有看到算法的时候就听到这样的道德教诲,说什么需要并行化,什么不需要,这非常奇怪。

至于在DLL中实现代码以及使用OpenCL,这与MQL没有关系。而问题是关于MQL的编程。

OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 

OpenCL在MQL5代码中工作。

下面是一个示例代码

 
meat:

至于在DLL中实现代码,以及使用OpenCL,这已经与MQL无关了。而我们正在讨论用MQL编程。

有多线程的脚本。而且你在测试器中不需要它
 
meat:

那你的答案是什么?你开始告诉我你有一个多么好的终端和测试人员,在多个流中工作。而且我还没有说过一个关于你的终端的字。我是说另一件事:MQL代码中的多线程。当一个算法可以被分成几个部分,并且每个部分都是平行执行的。而你,甚至没有理解这个主题,就开始无礼了。好吧,在我看来,用这种方法是没有建设性的,所以继续讨论也没有意义。

即使在目前的状态下,也有一些建设性的解决方案。几个mql程序(专家顾问和/或指标)可以交换信息,因此,任务和任务执行的结果 - 当然,如果你创建和安排一个适当的交换协议。所有的专家顾问都在不同的线程中工作(每个人都在自己的线程中),因此,这样的联合计算方案显然是多线程的,如果有几个核心的话,将均匀地加载它们。

信息的交换(使用mql5工具)可以通过以下方式进行

1.终端事件

2.命名通道

3.DLL

4.文件

5、等。

从这套工具中,你可以选择最合适的一个或使用多个(同时)。每种方法都有其优点和缺点,例如,命名管道允许你在本地网络上传输信息,因此有可能为多个多核处理器并行化任务。

好运。

 
Renat:

OpenCL在MQL5代码中工作。

下面是一个示例代码

好吧,事实上,它的工作是战斗的一半。但事后如何编辑和调试?如果它包含在一个字符串常量中,你将如何寻找一个错误?这意味着它必须在一个外部程序中开发,然后插入MQL中。但如果你不断地处理这种移植,你会发疯的,正如我在第一篇文章中指出的那样。既然代码开发反正是在其他地方完成的,那么把它全部放到MQL里有什么意义呢?把它编译成DLL并导入更容易。

当然,我理解的是,目的是创建一个开放的源代码,不使用任何自行编写的dlls。但这是特殊情况。通常情况下,程序是为自己写的,不是为别人写的。而且,很少有人愿意经常从事无意义的操作,把代码从一个程序拖到另一个程序。

但如果你为这一切做一个内置的编译器,那就是另一回事了。顺便说一句,为什么不呢?我的意思是,这就像一个C语言的语法在那里。也就是说,你可以把它作为常规mql代码的一部分来使用,只需向你的MetaEditor添加额外的功能。然后编译器会以适当的方式格式化相应的代码片段,添加\r\n,等等。

 
meat:

好吧,事实上,它的工作是战斗的一半。事后如何编辑和调试?如果是在字符串常数中,我们怎样才能找到错误?这意味着它必须在一个外部程序中开发,然后插入MQL中。但如果你不断地处理这种移植,你会发疯的,正如我在第一篇文章中指出的那样。既然代码开发反正是在其他地方完成的,那么把它全部放到MQL里有什么意义呢?把它编译成DLL并导入更容易。

当然,我理解的是,目的是创建一个开放的源代码,不使用任何自行编写的dlls。但这是特殊情况。通常情况下,程序是为自己写的,不是为别人写的。而且,很少有人愿意经常从事无意义的操作,把代码从一个程序拖到另一个程序。

但如果你为这一切做一个内置的编译器,那就是另一回事了。顺便说一句,为什么不呢?我的意思是,这就像一个C语言的语法在那里。也就是说,你可以把它作为常规mql代码的一部分来使用,只需向你的MetaEditor添加额外的功能。然后编译器会以适当的方式格式化相应的代码片段,添加\r\n,等等。

谁想要,谁就寻找机会。谁不想,理由是© 谚语

 
MetaDriver:

即使是现状,也有建设性的解决方案。几个mql程序(专家顾问和/或指标)可以交换信息,因此,任务和任务执行的结果 - 当然,如果你创建和安排一个适当的交换协议。所有的专家顾问都在不同的线程中工作(每个人都在自己的线程中),因此,这样的联合计算方案显然是多线程的,如果有几个核心的话,将均匀地加载它们。

信息的交换(使用mql5工具)可以通过以下方式进行

1.终端事件

2.命名通道

3.DLL。

4.文件

5、等。

从这套工具中,你可以选择最合适的一个或使用多个(同时)。每种方法都有其优点和缺点,例如,命名的管道允许你在局域网上传输信息,因此有可能为多个多核处理器并行化任务。

好运。

好吧,让我们说不是所有的都是mql5工具 :)而且这不是关于如何解决(规避)这个问题。你总能找到一个办法,这是毫无疑问的。问题是为什么我们不能给mql5添加相应的功能,这样我们就不必摆脱它了。

你必须承认,用适当的图表启动大量的专家顾问,只是为了把它们的处理安排在几个线程中,这是不理性和不可靠的。

 
很少有人在指标或专家顾问中需要多线程。而通常这些人能够通过dlls和其他东西自己实现这种多线程。
 
Reshetov:

谁想,寻找可能性。谁不想,理由是©谚语

首先,我们需要了解可行性 :)我的意思是一般使用MQL5的合理性,和MT5的合理性,分别是是否值得转换到这个平台。如果像MT4一样,为了正常工作,你需要使用一些魔法,运行几个EA或者把代码转移到DLL中,那么把一坨屎改成一坨屎就没有意义了。如果代码必须写在DLL中,那么使用一个具有开放API的平台,比以专家顾问(以及整个运行终端)的形式进行额外的填充要容易和安全。

 
meat:

首先,我们需要了解可行性 :)我的意思是一般使用MQL5的合理性,和MT5的合理性,分别是是否值得转换到这个平台。如果像MT4一样,为了正常工作,你需要使用一些向导,启动几个专家顾问,或将代码转移到DLL中,那么用一块狗屎换另一块狗屎就没有意义了。如果代码必须写在DLL中,那么立即使用一个具有开放API的平台,比以专家顾问(和整个运行终端)的形式进行额外的填充要容易和安全。

没有人强迫任何人切换到MQL5。例如,我错过了MQL4的功能,所以我不得不改用MQL5。

例如,所有的功能都可以在С++中实现,而MQL5应该只包含执行部分,整个东西应该用一个协议捆绑,使用命名的通道。有很多变种。你所需要的只是坚强的意志。

Связь с MetaTrader 5 через именованные каналы без применения DLL
Связь с MetaTrader 5 через именованные каналы без применения DLL
  • 2012.10.15
  • MetaQuotes Software Corp.
  • www.mql5.com
Перед многими разработчиками встает одинаковая проблема - как пробиться в песочницу торгового терминала без применения небезопасных DLL. Одним из простых и безопасных методов является использование стандартных именованных каналов (Named Pipes), которые работают как обычные файловые операции. Они позволяют организовать межпроцессорное клиент-серверное взаимодействие между программами. Посмотрите практические примеры на C++ и MQL5 в виде сервера, клиента, обмен данными между ними и замер производительности.