文章 "指标间的数据交换:易如反掌!" - 页 2

 
<br/ translate="no">

......只有一个问题是如何将指针转换为整数。这就是动态链接库可以帮助我们的地方,即 C++ 的数据类型转换功能。由于 C++ 中的指针是一种四字节数据类型,因此使用四字节的 int 类型也很方便...

如果我没记错的话,作者说的是隐式 类型转换。这篇文章信息量很大,非常感谢作者。

我还想补充一点,如果需要使用 SetPtr 方法,没有显式类型转换是不行的。

它看起来像这样

double* SetPtr(int a)
{
  double* a1 = reinterpret_cast <double* > (a);
  return(a1);
}

总的来说,如果指针得到广泛认可和使用,MQL5 将受益匪浅。

 

总的来说,如果指针得到广泛认可和使用,MQL5 将受益匪浅。

在此基础上,我还要加上异常处理、带参数的构造函数和多重继承。

但出于某种原因,开发人员认为我们不够聪明,无法利用所有这些功能,这样只会伤害自己。

尽管上述所有功能都是标准的 OOP 工具,而且从未伤害过任何人。

我得到的印象是(从我这里),他们根本无法可靠地实现这些机制。

可悲的是,有人决定我们不会在这里拥有它

 

我注意到,在新的 MT4 版本中,SetIndicatorValue() 函数不起作用,但 GetIndicatorValue() 却可以。是我的错觉,还是新版本(我认为是在版本 225 之后的某个地方发生的变化)中有什么东西破坏了该函数?如果是这样,有什么建议可以让本文中的方法在新版 MT4 上运行?旧版本不再受支持这一事实在这方面给我造成了麻烦,因为我非常希望在 EA 中只进行一次指标计算,但仍能通过将计算值推送到指标缓冲区 指针来显示在图表上。(顺便说一下,我非常感谢能找到这篇文章,并能应用其中的技术--感谢您的写作)。

一个相关的问题是,我注意到在 2011 年 3 月 17 日发布的 MT4 版本 392 的发布说明中写道:"3.在图表上显示指标时,删除了不必要的指标重新计算"。这一改进是否有效地否定了本文中技术的必要性,即按原定方式使用自定义指标将不再比使用本文中教授的基于指针的技术更慢?谢谢。

 
brisully:

我注意到,在新的 MT4 版本中,SetIndicatorValue() 函数不起作用,但 GetIndicatorValue() 却可以。是我的错觉,还是新版本(我认为是在版本 225 之后的某个地方发生的变化)中有什么东西破坏了该函数?如果是这样,有什么建议可以让本文中的方法在新版 MT4 上运行?旧版本不再受支持这一事实在这方面给我造成了麻烦,因为我非常希望在 EA 中只进行一次指标计算,但仍能通过将计算值推送到指标缓冲区 指针来显示在图表上。(顺便说一下,我非常感谢能找到这篇文章,并能应用其中的技术--感谢您的写作)。

一个相关的问题是,我注意到在 2011 年 3 月 17 日发布的 MT4 版本 392 的发布说明中写道:"3.在图表上显示指标时,删除了不必要的指标重新计算"。这一改进是否有效地否定了本文中技术的必要性,即按原定方式使用自定义指标将不再比使用本文中教授的基于指针的技术更慢?谢谢。

看来我弄错了,文章所附的指标文件在 MT4 的新版本中确实有效。抱歉误报,再次感谢您的工作。
 
Zhunko:

多么复杂啊!...

一年前,在伊尔努尔的帮助下,我用 MQL4 编写了一个处理内存的库。你可以分配内存、移动指针、写入和读取、将内存区域的名称传输给其他程序。

一切都基于映射。它比提议的库简单得多。

如何获得这个库?我将不胜感激。我需要在两台 MT 之间传输数据。
 
谢谢
 

是否有可能在 DLL 中添加不仅可以处理 double,还可以处理 datetime、long 和 int 的函数?

事实证明,现在价格数组的数据可以很容易地在嵌套结构之间传输,而无需复制,但时间、价差和体积的数据仍然必须复制。

我试着调整 GetPtr,使其适用于日期时间和 long(以及通过移动 int 位的反常情况)--但行不通,因为函数接受的是数组的引用,无法进行转换。

有人解决过这个问题吗?

 

沉默。

呃...我得记住 C++,然后自己安装 MSVC...

 
Laryx:

沉默。

呃...我得记住 C++,然后自己安装 MSVC...

现在没人会回答你了,大家都去前线了。

有 MT4 更新的消息吗?

 

在我耳边,在我耳边......:)

MT4 的更新对我来说非常好 - 我有很多库,但所有库都在 MT5 上(我无法想象没有 OOP 的生活)。还有 DCs,坏人们,他们在现实生活中并不都使用 MT5....因此,这个消息对我来说非常好。

但是--在正常的 MT4++ 出现之前,我认为没有必要为更新的平台修改代码。当官方测试版(是的,有了标准库,没有它我也不想写智能交易系统了)问世时,我们将开始转换代码....。

现在,我非常希望不仅能获得双数组的地址,还能获得其他数组的地址...啊--呸...我想通过类型转换绕过这个问题(time 和 longs 也是 8 字节的),但还行不通....