事件流。 如何控制并使事件闲置?(+已解决) - 页 5 1234567 新评论 TheXpert 2011.11.02 14:54 #41 Yedelkin: 好吧,我明白了,TheXpert 做了一个波段,问题就开始了。这对你来说确实是个坏消息。你不能与人沟通是我的错吗?专家顾问有一个固定的内存消耗,如果(1) 没有缓冲区模拟(2) 不在历史上绘制物体。(3) 没有内存分配 的错误。但这通常是在deinit中看到的。(4)没有与指数一起工作的错误。如果一个指标有一个全尺寸的缓冲区,这就是一个错误。如果有(1)或(2)燃烧就很容易用测试器+调度器进行跟踪。它是通过尺寸控制来处理的。事件本身根本就不会吃内存(升序)。因此,如果专家顾问没有问题,问题肯定出在指标上。 Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов www.mql5.com Основы языка / Переменные / Создание и уничтожение объектов - Документация по MQL5 Yedelkin 2011.11.02 15:28 #42 TheXpert: 在一个EA中,内存消耗是固定的,如果 (1) 没有缓冲器模拟 (2)在历史上没有绘制物体。 (3) 没有内存分配 的错误。但这通常是在脱胎换骨的情况下出现的。 (4) 没有使用缩略图的错误。如果一个指标有一个全尺寸的缓冲区,这就是一个错误。 如果你有(1)或(2),就很容易用测试器和调度器来追踪过载。可以用尺寸控制来处理。 事件本身根本不消耗内存(升序)。因此,如果专家顾问没有问题,问题肯定出在绝缘体上。 非常感谢您如此详细的答复。我将仔细考虑。(1)-(3)肯定不是。 关于(4)请解释一下:"如果指标将缓冲区带到全尺寸 "是什么意思,不要迷失在猜想中。 关于 "如果有(1)或(2)的燃烧,它很容易通过测试仪+管理器来追踪",我要求具体说明:即你建议不仅使用测试仪来测量程序的速度,而且还测量消耗的体积?是的;这样一个简单的解决方案,我甚至从来没有想到过。 更进一步。事实证明,如果专家顾问是使用动态对象建立的,它不可能有固定的内存。 另一方面,没有关于动态对象不正确操作的报告;我有多少次删除并启动专家顾问... 总之,我的头脑风暴提出了一个微不足道的想法:如果我不能把一起运行的程序量分开,我必须把它们分开运行,看看它们的消耗如何增加。专家顾问不应该从其自定义指标中启动,而应该从其自身图表的刻度中启动。考虑到你关于测试器测量体积的提示,一切似乎都很好。也许这就是罗氏提到这篇文章的意思......?但是,在重读这篇文章时,我仍然没有想到这样的想法。不是没有线索的! TheXpert 。 你让我疯狂。你无法与人沟通也要怪我吗? 愧疚是愧疚,浪花是愧疚 :) 而且我已经掌握了你对我的极端不礼貌的观点,并提前表示歉意 :) 即使如此,我的不礼貌告诉我,为自己说话比为别人说话更有成效 :)我们不在国家杜马 :) TheXpert 2011.11.02 16:00 #43 Yedelkin: 关于(4)请解释:"如果指标有全尺寸的缓冲区 "是什么意思,以避免在猜测中迷失。我的意思是,如果图表有,比如说,100000条,而专家顾问为所有100000条拉出一个缓冲区--这是不对的。 关于 "如果有(1)或(2),通过测试器+调度器来跟踪燃烧是很容易的",我要求具体说明:即你建议不仅使用测试器来测量程序的速度,而且还要测量消耗的体积?是的;这样一个简单的解决方案,我甚至从来没有想过。嗯...你的意思是运行测试器并在某处(例如在Windows任务管理器中)监控内存分配。不是一个非常可靠的方法,但如果问题出在EA,那么内存的烧毁程度可能会非常高。 因此,头脑风暴产生了一个看似微不足道的想法:如果我们不能划分一起运行的程序量,我们必须分别运行它们,看看谁的消耗量更大。 嗯,这就是它的实际发展过程... Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов www.mql5.com Основы языка / Переменные / Создание и уничтожение объектов - Документация по MQL5 Anatoli Kazharski 2011.11.02 17:11 #44 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, ""); // отправили событие с указанием последнего счетчика /* обработка остальных событий */ } --- 2011.11.02 18:24 #45 tol64:亚历克斯, 我现在有一个稍微类似的问题。也就是说,在EA初始化之后,一切工作都很正常。有一段时间我根本没有进入终端,我试图从一个用户信息面板切换到另一个,程序就 "停滞 "了。它甚至可能冻结几秒钟,直到开关发生。是同一种情况吗? 是的,就是这个。你在OnChartEvent 调用之间有一个以上的EventChart 发送。做我建议的那个附加功能,分析进来的事件编号,问题就会消失。你的例子在OnChartEvent()函数中有五个参数。什么是iview? 不小心把它弄到了函数头里。不要介意。 Документация по MQL5: Основы языка / Функции www.mql5.com Основы языка / Функции - Документация по MQL5 Dmitriy Skub 2011.11.02 18:39 #46 我无法相信人们有这么多的精力)。呃,我的17年在哪里!? Yedelkin 2011.11.02 20:01 #47 tol64: sergeev:... 因此,例如,当你点击一个对象时,CHARTEVENT_OBJECT_CLICK 事件 不会马上出现,而是在所有先前的事件从队列中删除后才出现。 正如你所理解的,事件队列被EventChartCustom堵塞了。 伙计们,来吧,阅读本帖 的第1.1点。那里讨论的信息是今天提出来的,我们可以认为它是正式的。那么现在不可能有(在这种情况下)"以前 "的事件和EventChartCustom 函数对队列的 "聋子阻塞 "这样的现象。 ...或者我们需要官方对手册中的新信息 进行反驳。 TheXpert,谢谢你的澄清。 --- 2011.11.02 20:11 #48 Yedelkin: 伙计们,来吧,阅读本帖 的第1.1点。那里讨论的信息是今天提出来的,我们可以认为它是正式的。那么现在不可能(在这种情况下)在队列中出现诸如 "以前的 "事件-事件和通过EventChartCustom 函数 "聋子阻断 "队列的现象。 ...或者需要对《手册》中的新信息进行正式驳斥。 这就像一个马戏团在进行吗? Yedelkin 2011.11.02 20:24 #49 sergeev: 这是不是在搞什么马戏团? 如果你认为这是一个马戏团,请随时删除它,或尝试根据其本身的价值来回答它。 --- 2011.11.02 20:37 #50 你有没有提出一个新的问题呢? 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
好吧,我明白了,TheXpert 做了一个波段,问题就开始了。
这对你来说确实是个坏消息。你不能与人沟通是我的错吗?
专家顾问有一个固定的内存消耗,如果
(1) 没有缓冲区模拟
(2) 不在历史上绘制物体。
(3) 没有内存分配 的错误。但这通常是在deinit中看到的。
(4)没有与指数一起工作的错误。如果一个指标有一个全尺寸的缓冲区,这就是一个错误。
如果有(1)或(2)燃烧就很容易用测试器+调度器进行跟踪。它是通过尺寸控制来处理的。
事件本身根本就不会吃内存(升序)。因此,如果专家顾问没有问题,问题肯定出在指标上。
在一个EA中,内存消耗是固定的,如果
(1) 没有缓冲器模拟
(2)在历史上没有绘制物体。
(3) 没有内存分配 的错误。但这通常是在脱胎换骨的情况下出现的。
(4) 没有使用缩略图的错误。如果一个指标有一个全尺寸的缓冲区,这就是一个错误。
如果你有(1)或(2),就很容易用测试器和调度器来追踪过载。可以用尺寸控制来处理。
事件本身根本不消耗内存(升序)。因此,如果专家顾问没有问题,问题肯定出在绝缘体上。
非常感谢您如此详细的答复。我将仔细考虑。(1)-(3)肯定不是。
关于(4)请解释一下:"如果指标将缓冲区带到全尺寸 "是什么意思,不要迷失在猜想中。
关于 "如果有(1)或(2)的燃烧,它很容易通过测试仪+管理器来追踪",我要求具体说明:即你建议不仅使用测试仪来测量程序的速度,而且还测量消耗的体积?是的;这样一个简单的解决方案,我甚至从来没有想到过。
更进一步。事实证明,如果专家顾问是使用动态对象建立的,它不可能有固定的内存。 另一方面,没有关于动态对象不正确操作的报告;我有多少次删除并启动专家顾问...
总之,我的头脑风暴提出了一个微不足道的想法:如果我不能把一起运行的程序量分开,我必须把它们分开运行,看看它们的消耗如何增加。专家顾问不应该从其自定义指标中启动,而应该从其自身图表的刻度中启动。考虑到你关于测试器测量体积的提示,一切似乎都很好。也许这就是罗氏提到这篇文章的意思......?但是,在重读这篇文章时,我仍然没有想到这样的想法。不是没有线索的!
你让我疯狂。你无法与人沟通也要怪我吗?
愧疚是愧疚,浪花是愧疚 :)
而且我已经掌握了你对我的极端不礼貌的观点,并提前表示歉意 :) 即使如此,我的不礼貌告诉我,为自己说话比为别人说话更有成效 :)我们不在国家杜马 :)
关于(4)请解释:"如果指标有全尺寸的缓冲区 "是什么意思,以避免在猜测中迷失。
我的意思是,如果图表有,比如说,100000条,而专家顾问为所有100000条拉出一个缓冲区--这是不对的。
关于 "如果有(1)或(2),通过测试器+调度器来跟踪燃烧是很容易的",我要求具体说明:即你建议不仅使用测试器来测量程序的速度,而且还要测量消耗的体积?是的;这样一个简单的解决方案,我甚至从来没有想过。
嗯...你的意思是运行测试器并在某处(例如在Windows任务管理器中)监控内存分配。不是一个非常可靠的方法,但如果问题出在EA,那么内存的烧毁程度可能会非常高。
因此,头脑风暴产生了一个看似微不足道的想法:如果我们不能划分一起运行的程序量,我们必须分别运行它们,看看谁的消耗量更大。
...
也就是说,例如,当你点击对象时--事件CHARTEVENT_OBJECT_CLICK 不会立即出现,而是在所有先前的事件从队列中撤出后才出现。
正如你所理解的,队列中紧紧塞满了EventChartCustom。
...
亚历克斯, 我现在有一个稍微类似的问题。也就是说,在EA初始化之后,一切工作都很正常。有一段时间,我根本没有进入终端,我试图从一个用户信息面板切换到另一个,程序 "停滞 "了。它甚至可能冻结几秒钟,直到开关发生。是同一种情况吗?
还没有试过你的解决方案,忙于另一个问题,但我一定会试的,因为我自己还没有找到解决方案。到目前为止有一个问题。
在你的例子中,OnChartEvent()函数里有五个参数。iview 是什么?
亚历克斯, 我现在有一个稍微类似的问题。也就是说,在EA初始化之后,一切工作都很正常。有一段时间我根本没有进入终端,我试图从一个用户信息面板切换到另一个,程序就 "停滞 "了。它甚至可能冻结几秒钟,直到开关发生。是同一种情况吗?
是的,就是这个。你在OnChartEvent 调用之间有一个以上的EventChart 发送。做我建议的那个附加功能,分析进来的事件编号,问题就会消失。
你的例子在OnChartEvent()函数中有五个参数。什么是iview?
不小心把它弄到了函数头里。不要介意。
tol64:
...
因此,例如,当你点击一个对象时,CHARTEVENT_OBJECT_CLICK 事件 不会马上出现,而是在所有先前的事件从队列中删除后才出现。
正如你所理解的,事件队列被EventChartCustom堵塞了。
伙计们,来吧,阅读本帖 的第1.1点。那里讨论的信息是今天提出来的,我们可以认为它是正式的。那么现在不可能有(在这种情况下)"以前 "的事件和EventChartCustom 函数对队列的 "聋子阻塞 "这样的现象。 ...或者我们需要官方对手册中的新信息 进行反驳。
TheXpert,谢谢你的澄清。
伙计们,来吧,阅读本帖 的第1.1点。那里讨论的信息是今天提出来的,我们可以认为它是正式的。那么现在不可能(在这种情况下)在队列中出现诸如 "以前的 "事件-事件和通过EventChartCustom 函数 "聋子阻断 "队列的现象。 ...或者需要对《手册》中的新信息进行正式驳斥。
这是不是在搞什么马戏团?
如果你认为这是一个马戏团,请随时删除它,或尝试根据其本身的价值来回答它。