错误、漏洞、问题 - 页 3126

 
Nikolai Semko #:

你在EA或指标中形成一个数据结构或结构数组,并将其发送给一个资源。

Kanvas 本身是以图形资源(OBJ_BITMAP_LABEL/OBJ_BITMAP)工作的。因此,剩下的就是把资源的名称传达给另一个应用程序,它将很容易地访问像素。它还需要传递像素格式。而且你可以通过另一个CCanvas读取像素或改变它们。它有一个方法,CCanvas::Attach,可以把它附加到一个现有的资源上。

 
Nikolai Semko #:

有什么问题吗,安德烈?
形成一个数据结构或结构阵列

一点问题都没有!这只是额外的工作,这就是我所说的。

任何缓冲的指标都可以被任何其他指标或专家顾问读取。

例如,我有一个EA,它得到一个运行指标的列表,然后在指定的工具/TF列表上创建它们,然后从它们那里收集信号(并将它们发送到telegram)。因此,任何缓冲指标可以简单地在图表上运行,它将被自动接收。但kanvas指标将不得不手动连接,然后其余的工作应该手动完成。

我们需要用kanvas指标来统一工作。我担心这种统一将导致......。缓冲区指标))

 
Nikolai Semko #:

有什么问题吗,安德烈?

我没有找到,甚至没有找过。

 
Andrey Khatimlianskii #:

没有任何问题!这只是不必要的姿态,这就是我所谈论的。

任何缓冲指标都可以被任何其他指标或EA读取,而kanvas需要一个kastum层。

例如,我有一个EA,它得到一个运行指标的列表,然后在指定的工具/TF列表上创建它们,然后从它们那里收集信号(并将它们发送到telegram)。因此,任何缓冲指标可以简单地在图表上运行,它将被自动接收。但kanvas指标将不得不手动连接,然后其余的工作应该手动完成。

我们需要用kanvas指标来统一工作。我担心这种统一将导致......。缓冲器指标))。

我说的是扩展可能性,包括在指标和专家顾问中使用相同的类进行可视化。当然,在指标中,总是有一个缓冲转移的方法,没有人禁止在纯画布的情况下使用它。
顺便说一下,我已经实现了一种混合的传输方法,当一个结构数组通过一个联合体在一个缓冲区内传输时。虽然在接收端有一个额外的附加功能,但首先,它并不复杂,其次,由于是结构,而不是双数的数组,它使用户在处理另一个指标的数据时更容易、更方便。用户肯定会喜欢这个。
 
Mihail Matkovskij #:

Kanvas 本身是以图形资源(OBJ_BITMAP_LABEL/OBJ_BITMAP)工作的。因此,它仍然是将资源的名称传达给另一个应用程序,它将很容易访问像素。它还需要传递像素格式。而且你可以通过另一个CCanvas读取像素或改变它们。它有一个叫做CCanvas::Attach的方法,可以把它附加到现有的资源上。

不太可能有转移图形的任务,因为它通常与其他窗口的条形和价格同步,并与事件模型集成。
如果不存在或不活动,则不会形成指标窗口。
如果指标窗口不存在,只有通过iCustom使用缓冲区或缓冲区的方式。但正如我之前所说,你可以把一个结构或一个结构阵列放入这些缓冲区。
 
Andrei Trukhanovich #:

我找不到它,我甚至都没在找。

谢谢你的报告。
现在我们知道你不
 
Nikolai Semko #:
此外,我认为,如果指标窗口不存在或不活动,甚至不会生成图形资源。

我想知道在什么情况下,如果一个指标正在运行而其窗口不存在?而当窗口不活动时(用户已经切换到另一个图表或最小化它),什么资源会从内存中卸载,是简单地删除吗?

Nikolai Semko#:
但是,正如我所说,你可以把一个结构或一个结构数组放入这些缓冲区。

我想我同意你的说法。我必须创造一个多任务的机器人。第一个应用实例创建任务,并为其创建图表,然后应用相同机器人的特殊模板。然后,第一个机器人创建任务,由自动机创建的机器人执行这些任务。数据传输是通过资源完成的。数字和结构的字符串被转移到那里。在网站上有一个通过http传输数据的例子(如果我没记错的话)。但是,关于结构的数据、它们的大小和类型先放在那里,然后是数据本身。我决定在我的Expert Advisor中通过一个字符串形式的ucar-types数组来传递字符串和数字,从而大大简化了读/写的过程,使其更加容易。但我从来没有将字节写入指示器缓冲区并从那里读取。但我已经看到这种方法的一个缺点--指标条中的字节数有限。虽然,阵列的每个单元有8个字节。也许这并不是一个很大的缺点。谁知道呢...

 
Mihail Matkovskij #:

我想知道在什么情况下,如果一个指标正在运行,但其窗口不存在?

我的意思是使用iCustom

而当窗口不活动时(用户已经切换到另一个图表或最小化它),资源从内存中卸载,是否只是简单地删除?

这只是我的假设,因为在窗口最小化时,没有形成图像的特殊意义。它在MT中是如何实现的--没有检查,但遇到了类似的东西。我已经忘记了所有的细微差别。
总之,资源被删除的可能性不大,但也没有随着时间而更新。也就是说,CCanvas::Update不起作用。

void CCanvas::Update(const bool redraw)
  {
//--- check
   if(m_rcname==NULL)
      return;
//--- update resource and redraw
   if(ResourceCreate(m_rcname,m_pixels,m_width,m_height,0,0,0,m_format) && redraw)
      ChartRedraw(this.m_chart_id);
  }
 
Nikolai Semko #:

我的意思是使用iCustom

事实证明,你可以通过资源和缓冲区传递数值,但不能通过Kanvas资源。这是 一个有趣的任务,使用iCustom 调用一个指标并将其输出到Kanvas。我还没有试过。在我看来,在这种情况下,可能存在错误。也许,通过iCustom加载的这样一个指标根本就不能工作?

在任何情况下,资源都不可能被删除,但它也不会随着时间而更新。也 就是说,CCanvas::Update不起作用

我认为ResourceCreate是有效的,但使用ChartRedraw的结果并没有呈现出来。呼吁功能去,但系统明白,图表在不活动时不需要更新。但如果ResourceCreate 不起作用,试想一下,当图表处于非活动状态时,指标在随机的tick上有更新的数据,但Kanvas的资源却没有更新然后用户决定激活这个不活动的图表,看 一下指标(Kanwa)。而事实证明,有一个勾,但Canva仍然和用户改变图表前一样。如果在不活动期间,有很多虱子怎么办?当然, 指示器会处理它们,但没有一个结果会显示在画布上。

 
Mihail Matkovskij #:

我认为ResourceCreate起作用了,但用ChartRedraw却不能显示结果。

是的,你可能是对的。
而为了节省资源,监控窗口活动是正确的,如果窗口不活动就不生成位图。

值得检查,而不是做假设。