事件流。 如何控制并使事件闲置?(+已解决) - 页 5

 
Yedelkin:

好吧,我明白了,TheXpert 做了一个波段,问题就开始了。

这对你来说确实是个坏消息。你不能与人沟通是我的错吗?

专家顾问有一个固定的内存消耗,如果

(1) 没有缓冲区模拟

(2) 不在历史上绘制物体。

(3) 没有内存分配 的错误。但这通常是在deinit中看到的。

(4)没有与指数一起工作的错误。如果一个指标有一个全尺寸的缓冲区,这就是一个错误。

如果有(1)或(2)燃烧就很容易用测试器+调度器进行跟踪。它是通过尺寸控制来处理的。

事件本身根本就不会吃内存(升序)。因此,如果专家顾问没有问题,问题肯定出在指标上。

Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
  • www.mql5.com
Основы языка / Переменные / Создание и уничтожение объектов - Документация по MQL5
 
TheXpert:

在一个EA中,内存消耗是固定的,如果

(1) 没有缓冲器模拟

(2)在历史上没有绘制物体。

(3) 没有内存分配 的错误。但这通常是在脱胎换骨的情况下出现的。

(4) 没有使用缩略图的错误。如果一个指标有一个全尺寸的缓冲区,这就是一个错误。

如果你有(1)或(2),就很容易用测试器和调度器来追踪过载。可以用尺寸控制来处理。

事件本身根本不消耗内存(升序)。因此,如果专家顾问没有问题,问题肯定出在绝缘体上。

非常感谢您如此详细的答复。我将仔细考虑。(1)-(3)肯定不是。

关于(4)请解释一下:"如果指标将缓冲区带到全尺寸 "是什么意思,不要迷失在猜想中。

关于 "如果有(1)或(2)的燃烧,它很容易通过测试仪+管理器来追踪",我要求具体说明:即你建议不仅使用测试仪来测量程序的速度,而且还测量消耗的体积?是的;这样一个简单的解决方案,我甚至从来没有想到过。

更进一步。事实证明,如果专家顾问是使用动态对象建立的,它不可能有固定的内存。 另一方面,没有关于动态对象不正确操作的报告;我有多少次删除并启动专家顾问...

总之,我的头脑风暴提出了一个微不足道的想法:如果我不能把一起运行的程序量分开,我必须把它们分开运行,看看它们的消耗如何增加。专家顾问不应该从其自定义指标中启动,而应该从其自身图表的刻度中启动。考虑到你关于测试器测量体积的提示,一切似乎都很好。也许这就是罗氏提到这篇文章的意思......?但是,在重读这篇文章时,我仍然没有想到这样的想法。不是没有线索的!

TheXpert

你让我疯狂。你无法与人沟通也要怪我吗?

愧疚是愧疚,浪花是愧疚 :)

而且我已经掌握了你对我的极端不礼貌的观点,并提前表示歉意 :) 即使如此,我的不礼貌告诉我,为自己说话比为别人说话更有成效 :)我们不在国家杜马 :)

 
Yedelkin:

关于(4)请解释:"如果指标有全尺寸的缓冲区 "是什么意思,以避免在猜测中迷失。

我的意思是,如果图表有,比如说,100000条,而专家顾问为所有100000条拉出一个缓冲区--这是不对的。

关于 "如果有(1)或(2),通过测试器+调度器来跟踪燃烧是很容易的",我要求具体说明:即你建议不仅使用测试器来测量程序的速度,而且还要测量消耗的体积?是的;这样一个简单的解决方案,我甚至从来没有想过。

嗯...你的意思是运行测试器并在某处(例如在Windows任务管理器中)监控内存分配。不是一个非常可靠的方法,但如果问题出在EA,那么内存的烧毁程度可能会非常高。

因此,头脑风暴产生了一个看似微不足道的想法:如果我们不能划分一起运行的程序量,我们必须分别运行它们,看看谁的消耗量更大。

嗯,这就是它的实际发展过程...
Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
  • www.mql5.com
Основы языка / Переменные / Создание и уничтожение объектов - Документация по MQL5
 
sergeev:
...

也就是说,例如,当你点击对象时--事件CHARTEVENT_OBJECT_CLICK 不会立即出现,而是在所有先前的事件从队列中撤出后才出现。
正如你所理解的,队列中紧紧塞满了EventChartCustom。

...

亚历克斯, 我现在有一个稍微类似的问题。也就是说,在EA初始化之后,一切工作都很正常。有一段时间,我根本没有进入终端,我试图从一个用户信息面板切换到另一个,程序 "停滞 "了。它甚至可能冻结几秒钟,直到开关发生。是同一种情况吗?

还没有试过你的解决方案,忙于另一个问题,但我一定会试的,因为我自己还没有找到解决方案。到目前为止有一个问题。

在你的例子中,OnChartEvent()函数里有五个参数。iview 是什么

ulong event_idle=0; bool bidle;
//---
void OnChartEvent(int iview, int id, long lparam, double dparam, string sparam)
  {
    if(id==CHARTEVENT_CUSTOM+VM_IDLE)
      {
        if(event_idle>(ulong)lparam || bidle) // если последнее посланное больше чем пришедшее, то сразу выходим
          {
           bidle=event_idle > (ulong)lparam;
           //---
           if(bidle) return;
           //---
           event_idle=0;
          } 
        event_idle++;
        ChartRedraw(m_chart); // обновили чарт
        EventChartCustom(m_chart, VM_IDLE, (long)event_idle, 0, ""); // отправили событие с указанием последнего счетчика
        return; 
      }
    EventChartCustom(m_chart, VM_IDLE, (long)event_idle, 0, ""); // отправили событие с указанием последнего счетчика

    /*
        обработка остальных событий
    */
  }
 
tol64:

亚历克斯, 我现在有一个稍微类似的问题。也就是说,在EA初始化之后,一切工作都很正常。有一段时间我根本没有进入终端,我试图从一个用户信息面板切换到另一个,程序就 "停滞 "了。它甚至可能冻结几秒钟,直到开关发生。是同一种情况吗?

是的,就是这个。你在OnChartEvent 调用之间有一个以上的EventChart 发送。做我建议的那个附加功能,分析进来的事件编号,问题就会消失。

你的例子在OnChartEvent()函数中有五个参数。什么是iview

不小心把它弄到了函数头里。不要介意。

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5
 
我无法相信人们有这么多的精力)。呃,我的17年在哪里!?
 

tol64:

sergeev:
.
..

因此,例如,当你点击一个对象时,CHARTEVENT_OBJECT_CLICK 事件 不会马上出现,而是在所有先前的事件从队列中删除后才出现
正如你所理解的,事件队列被EventChartCustom堵塞了

伙计们,来吧,阅读本帖 的第1.1点。那里讨论的信息是今天提出来的,我们可以认为它是正式的。那么现在不可能有(在这种情况下)"以前 "的事件和EventChartCustom 函数对队列的 "聋子阻塞 "这样的现象。 ...或者我们需要官方对手册中的新信息 进行反驳。

TheXpert,谢谢你的澄清。

 
Yedelkin:

伙计们,来吧,阅读本帖 的第1.1点。那里讨论的信息是今天提出来的,我们可以认为它是正式的。那么现在不可能(在这种情况下)在队列中出现诸如 "以前的 "事件-事件和通过EventChartCustom 函数 "聋子阻断 "队列的现象。 ...或者需要对《手册》中的新信息进行正式驳斥

这就像一个马戏团在进行吗?
 
sergeev:
这是不是在搞什么马戏团?

如果你认为这是一个马戏团,请随时删除它,或尝试根据其本身的价值来回答它。

 
你有没有提出一个新的问题呢?