错误、漏洞、问题 - 页 1547

 
Комбинатор:
现在请注意一个问题--如何使终端立即重绘以这种方式计算的数据?

从不在OnCalculate中的缓冲区提取 数据

OnCalculate的最小绘制时间为1分钟

打勾指标每打一个勾就画一次

 
comp:
似乎并没有。

不过,ChartRedraw将100%地完成四个方面的工作。

结果 在5个方面也是可以的。

所以ChartRedraw在两个平台上都能正常工作。

 

当CHARTEVENT_CHART_CHANGE到达时,我做了一个计算,有时会持续一秒钟/晚上。如果在计算过程中,例如,一个图表被移动了,那么在计算结束后,CHARTEVENT_CHART_CHANGE会被再次从队列中调用。

有没有可能在计算过程中知道事件队列里有东西?那么它能不能不做一个不再相关的计算,中断它并开始一个新的计算?

例如,如果即使是非常繁重的计算部分也有IsStopped() 的检查,那么专家顾问的关闭将是即时的,不需要等待计算。

这里会有类似的东西,但不是用关闭的事件,而是用ChartEvent。

 
comp:

当CHARTEVENT_CHART_CHANGE到达时,我做了一个计算,有时会持续一秒钟/晚上。如果在计算过程中,例如,一个图表被移动了,那么在计算结束后,CHARTEVENT_CHART_CHANGE会被再次从队列中调用。

有没有可能在计算过程中知道事件队列里有东西?那么它能不能不做一个不再相关的计算,中断它并开始一个新的计算?

例如,如果即使是非常繁重的计算部分也有IsStopped()的检查,那么专家顾问的关闭将是即时的,不需要等待计算。

这里会有类似的东西,但不是用关闭的事件,而是用ChartEvent。


做第二个处理线程(例如,以ms计时器的形式)。

并正是在那里进行计算,只要计数器标志==XXX被设置,在CHARTEVENT_CHART_CHANGE时增量。

因此,你快速地获取整个ChartEvent队列,设置一个标志,与此平行的是,计时器检查这个标志并计算它。

---

在同一计时器上,检查标志计数器的值。如果当前计数器的值高于开始计算时的值,就有可能停止计算。 所以它就像IsNewChanged一样

 
o_O:

因此,你可以非常快速地浏览整个ChartEvent队列,设置一个标志,同时,定时器拉出该标志并计算它。

你是说ChartEvent 和Timer事件 是平行运行的?
 

服务台发表了这样的声明

SetIndexBuffer делается однократно на вызове OnInit

是否有人不在OnInit和/或重复使用SetIndexBuffer?在MT4中,我一直在使用它。在MT5中,你不能这样做,很遗憾。

 
comp:
你是说ChartEvent 和Timer事件 是平行运行的?

即使它们是按顺序执行的--也不妨碍你至少使用这个。

你可以立即拿走整个ChartEvent,只放一个订单。

---

关于定时器和图表事件的平行性是一个相关的问题。

询问服务人员。

 
o_O:

即使它们是按顺序执行的--也不妨碍你至少使用这个。

你可以立即拿走整个ChartEvent,只放一个订单。

---

关于定时器和图表事件的平行性是一个相关的问题。

请到服务台询问。

没有人读过文件...

客户端将生成的事件发送到相应的开放图表中。同时事件可以由图表(图表事件)或mql5程序(自定义事件)产生。通过设置图表的CHART_EVENT_OBJECT_CREATECHART_EVENT_OBJECT_DELETE 属性,可以启用或禁用图表上创建和删除图形对象事件的生成。每个mql5程序和每个图表都有自己的事件队列,所有的新事件都存储在这里。

该程序只接收来自它所运行的图表的事件。所有的事件都按照收到的顺序逐一处理。如果队列中已经有一个事件NewTick,或者该事件处于处理状态,一个新的事件NewTick不会被放入mql5-程序的队列中。同样,如果mql5-程序的队列已经包含了ChartEvent 事件或者这样的事件正在被处理,那么这种类型的新事件将不会被排队。计时器事件按照同样的方案处理--如果队列中有一个计时器 事件,或者计时器事件已经被处理,新的计时器事件就不会被放入队列。

 
Slawa:

没有人读过文件...

那么就不会出现基于事件的计算中断。
 
Slawa:

没有人读过文件...

好久不见了