MQL中的异步和多线程编程 - 页 6

 
Andrey Pogoreltsev:

MQL5有异步功能,例如OrderSendAsync

至于与网络或文件系统的交互--使用WinAPI,我写了上述解决方案。我认为一切都在那里,为的是这个。你可以在微软网站上阅读如何使用这些方法。还有什么尚待发现?)

是的,我知道OrderSendAsync,但它只用于发送请求。
我一直在寻找WinAPI这个方向,但不知道线程在mql中是不可用的,inluder中的原型是误导性的。

 
Andrey Pogoreltsev:

MQL5有异步功能,例如OrderSendAsync

MQL4/5一直有异步和多线程执行的MQL代码https://www.mql5.com/ru/docs/runtime/running。

也就是说,一切都 "开箱即用",唯一的问题是MQL程序之间的数据交换,开发人员没有现成的解决方案,或者说,只有终端的全局变量--所以他们设计了数据交换--非常不方便,效率很低,但在QB中有现成的数据交换解决方案。

你在上面提到了学习NS--它需要多线程,嗯,是的,但MT只带有Alglib,我用了很久,也没见过学习NS需要1-2秒以上的时间,也就是说,为什么会快?- 如果你将使用NS的第三方包--没有选择,你将不得不超越MT--使用dll,那么同样,数据交换和多线程有什么问题?- 都在一个dll中实现。

有人提到了蟒蛇...我不是在说那里的速度,那是一个非常特殊的NS开发环境,一切似乎都在那里,但就是无法使用它--等待,等待......最有趣的事情是在Python中使用NS工作)))

SZZY:Python没有正常意义上的多线程,但我可能是错的。 我讨厌Python--有很多噪音和主流,一切都可以开箱即用,但.....。但在这样一个缓慢的系统中工作是不可能的,唯一的好处是有很多现成的Python代码和一个庞大的互联网社区。

 

为什么裸露的指针如此不安全?

在我看来,开发商在撒谎,真正的原因是为了防止从dll中拉人。很可能也放了一些棘手的呼叫惯例。

 
Vict:

为什么裸露的指针如此不安全?

在我看来,开发商在撒谎,真正的原因是为了防止从dll中拉人。很可能也放了一些棘手的呼叫惯例。

正如主持人所写,出于安全原因,对物理内存地址的访问是被拒绝的。
通过它,熟练的、不择手段的编码员可以获得编译程序的任何元素。

 
Roman:

正如主持人所写,出于安全原因,对物理内存地址的访问是被拒绝的。
通过它,熟练的、不择手段的编码员可以获得编译程序的任何元素。

我觉得这很难让人相信。我们只是不需要与成熟语言的竞争。而所有这些技巧,如重新编译时改变大小,都是为了同样的目的。

 
Vict:

我觉得这很难让人相信。它只是不需要来自成熟语言的竞争。而所有这些技巧,如重新编译时改变大小,都是为了同样的目的。

不,是这样的,记得mql4中的大规模反编译,累积的错误已经被考虑到了,并且已经实施了保护。
总的来说,这是一个有效的安全选择,不利于直接调用WinAPI,但由于dll是开放的,功能不会改变,交互方式会改变。
因此,你将不会遇到任何反编译或潜在的黑客攻击你的程序。而这是很好的,为开发者点赞。

 
Vict:

为什么裸露的指针如此不安全?

管理员Renat总是回答这样的问题,Metaquotes总是选择一个保证安全的解决方案,好吧,或者,你得到一个内存指针,可以注入一个病毒,可以将其代码添加到编译的ex4/ex5中。


罗马 人。

以直接调用WinAPI为代价

有什么坏处呢? 你有一个主程序在主进程中运行,没有主程序它就不会运行--这一点清楚吗?

- 你可以使用WinAPI在一个单独的进程中运行Python中的函数体 吗?

-..... 从Java使用WinAPI的函数体?

-..... 使用WinAPI从WordBASIC的函数体?


作为一个选项,Metakvot在这里给出了一个明确的答案--不提供这个功能,再往下看实例:写给Python软件、Oracle、Microsoft--把他们的脑袋轰掉吧。

)))

 
Roman:

不不,事情就是这样,记得mql4中广泛的反编译,这些bug被考虑到了,并且实施了保护。
总的来说,这是一个有效的安全选择,不利于直接调用WinAPI,但由于对dll的访问是开放的,功能没有改变,互动的方式却改变了。
因此,你将不会遇到任何反编译或潜在的黑客攻击你的程序。而这对开发者来说是好事,也是一种尊重。

考虑到这一点,市场上的播客开始编入原生系统。

雷纳特

从Build 500开始,它已经是弱反编译的了,因为安全系统已经完全改变。

在迁移到MQL5引擎和市场后,反编译器主题将完全死亡。谁不知道--来自Market的产品在购买时是以32/64 nativ(纯汇编,没有办法反编译)编译的,并针对买方的硬件进行了加密。

而从其他一些网站反编译甚至是有利可图的--通过可怕和邪恶的反编译把所有人都赶到自己身边。一般来说--没有私人恩怨,只是生意。
 
fxsaber:

仅在MQL中,这两项任务都是通过自动运行EA计数工具来解决的。

正是如此,我就是这样做的。然而,我没有使用Web-Request,但自动优化--对我和TC联盟来说--是完全有效的。而选择是分几次进行的,首先优化一个 "干净的 "系统,并固定其参数,然后运行 盈亏平衡优化,并固定其参数,然后运行保护性SL的优化(如果需要)。而且到处都有与框架有关的工作,以及对其数据的处理。

所有必要的多线程都已经到位了。

 
Igor Makanu:

管理员Renat总是回答这样的问题,Metaquotes总是选择一个保证安全的解决方案,好在另一种情况是,你得到一个内存指针,可以注入一个病毒,可以将其代码添加到编译的ex4/ex5中。

你真的认为我不能在调试器下用专家顾问运行终端,找到执行的相对地址吗?任何函数或变量的地址?另一件事是,这些地址可能会改变(因为应用了技巧),但在理论上,我可以找出正常指针会给我的一切。

另一件让他们害怕的事情是在运行时通过指针找出函数地址,并在dll中把它们拽出来。