如何使图表上的输出为单行字体? - 页 7

 
Renat Fatkhullin:

思考并大幅改善它有什么问题?

已经有一个MQL4-MQL5库处于 "它能工作,而且很好 "的模式,正在撕扯着你的头发。人们正在认真地用它来比较两个平台的速度。

而现在你提供的不是思考,而是创造一个新的尖端工具,将被拖着到处说 "MT5比较慢"。


我什么都不明白。我再次建议,如果fxsaber有时间和愿望。

1.为MT5制作一个库(MT4可选),在测试器/优化器模式下禁用不必要的功能(目前是图形)。

2.要做到这一点,可以将这些昂贵的功能包裹在定义中,并根据操作模式,启用或禁用它们

没有必要如此情绪化,没有人在攻击MT5。

 
fxsaber:

有一个通用的工具,可以让你用一句话来衡量测试器中代码的性能。我们设法在那里看到了很多东西。特别是,单次运行比优化运行要慢。

关于评论的问题,开发商给出了他们的答案。到目前为止,我自己通过一条线 加速了1.5-2倍的优化。

而SD告诉我关于性能的一个 重要细微差别


担心函数执行的微秒数只在优化模式下是合理的。在实时性方面,这没有什么区别。而评论对专家顾问的实时表现没有起到任何作用,即使它的速度慢了一个数量级。


但事实是,几乎没有人以这样的方式编写EA,使其在测试器中尽可能快地运行

请写一个关于如何实现这一目标的常见问题。请把你的想法都放在一个地方。我们会把它们放在你的博客和其他地方,我可能会在YouTube上制作一个视频剪辑,并把它放在MQ频道。你无疑在这种系统性的事情上有丰富的经验,让我们为了共同的利益而分享吧!
 
Alexey Volchanskiy:
请写一个关于如何实现这一目标的常见问题。让所有的思想都在一个地方。

有一个伟大的主题就是为了这个。也许有人会花大量的时间和精力,根据本线程中的许多帖子,编制一个逐节的FAQ。


对于性能,我总是使用相同的配方--TesterBenchmark +profiler。当然,还要在测试器的功能和真实贸易之间找到一个合理的平衡。这就是MT4Orders的编写方式。该程序的目的是在测试器中快速工作,在真实账户上理想地工作。为此,我们需要了解,在同一个测试器中,有一些(有时是昂贵的)检查,对于真正的交易来说是不必要的。这导致了巨大的节约。以及对同一历史的缓存等。也就是说,有必要写一些库,这些库的内脏有时对测试者和真实者有不同的逻辑。不幸的是,Trade.mqh并不是这样一个库。

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2017.02.24
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
fxsaber:

有一个伟大的主题就是为了这个。也许有人会花大量的时间和精力,根据本线程中的许多帖子,编制一个逐节的FAQ。


对于性能,我总是使用相同的配方--TesterBenchmark +profiler。当然,还要在测试器的功能和真实贸易之间找到一个合理的平衡。这就是MT4Orders的编写方式。该程序的目的是在测试器中快速工作,在真实账户上理想地工作。为此,我们需要了解,在同一个测试器中,有一些(有时是昂贵的)检查,对于真正的交易来说是不必要的。这导致了巨大的节约。以及对同一历史的缓存等。也就是说,有必要写一些库,这些库的内脏有时对测试者和真实者有不同的逻辑。不幸的是,Trade.mqh并不是这样一个库。

这就是我在以前的帖子中想说的。在上述分支上做一个FAQ是最重要的任务。让我们来做一个关于加速优化的FAQ,这是个很卑微的任务。你只要写下你的想法,如果有任何代码,就添加代码。我将试着总结一下,刷一下,然后我们达成一致意见后再发布。我会做这个剪辑,我有很多经验,没问题。
 
Alexey Volchanskiy:
让我们来做一个不大的任务--做一个关于加速优化的FAQ。

利他主义有时是一件好事。但时间并不属于我,它属于家庭。

谦虚的代码和食谱被分享。这似乎足够了。

我不拥有任何秘密。

 
fxsaber:

而且它这样做是正确的。这和改变对象的属性后不做ChartRedraw一样有意义。用术语来说就是

ChartRedraw应该在大量写入后被调用,而不是在每次写入后。

是的,但如果我有一个小画布,比如130x80像素,这还不到总窗口的1%,而我需要将当前信息输出到其中。所以在MT4中,我可以用Update(false)来做,而不用重绘整个屏幕,但在MT5中,我每次都要重绘整个屏幕。而且它的资源密集度要高几个数量级。而且这不是一个测试,而是一个工作课题。
 
Nikolai Semko:
是的,但如果我有一个小画布,比如130x80像素,不到总窗口的1%,而我需要在其中显示当前信息。所以在MT4中,我可以用Update(false)来做,而不用重绘整个屏幕,但在MT5中,我每次都要重绘整个屏幕。而且它的资源密集度要高几个数量级。而且这不是一个测试,而是一个工作课题。

我确信,在kanvas或任何其他动作时,屏幕从未被部分重绘。

 
fxsaber:

利他主义有时是一件好事。但时间并不属于我,它属于家庭。

谦虚的代码和食谱被分享。这似乎足够了。

我没有任何秘密。


谦虚是伟大的!我也是一个谦虚的人。利他主义在大多数情况下是为已故的特蕾莎修女服务的。虽然,有时这种坏病的根源--利他主义--也会在我身上萌发出来 ))

 
fxsaber:

当然,当kanvas或任何其他动作时,屏幕永远不会被部分重绘。


是的,我错了。我错了,我说MT4的ResourceCreate 没有ChartRedraw,每次都会重绘画布。它只是偶尔做一次,而MT5根本就不做。

是的,我当然是个哑巴。在硬件层面上,屏幕上下文不能只改变屏幕的一部分,而是整个屏幕。
当我引入一个小的延迟Sleep(10)时,我明白了。

附加的文件: