文章 "MQL5 酷宝典 - 创建的环形缓存用于快速计算滑动窗口中的指标" - 页 2

 
Vasiliy Sokolov:

我第一次完全理解了你的意思。

什么是 "数值变化特征"?它是一些在动态中发生变化的值。因此,它是一个指标。我们没有必要为此开发一个环形缓冲器,只需创建一种算法,在几个环形指标的基础上计算您所说的 "变化特征 "即可。

签名不是一个值。签名是数值的变化特征

将其显示在图表上或制成指标并不重要。重要的是,程序可以看到当期价值变化的特征。重要的是要建立一种机制,从数据数组(即环形缓冲区) 中提取这一特征。

这种机制是最复杂的。如果您尝试创建它,您就会明白。

如果只是在图表上绘制一条曲线,我们的大脑就能看到数值变化本身的特征。它已经适应了这样做。

但如果要让程序看到它,那就难了。

 

补充一点:

目前,交易算法 只能 在市场环境参数的特定值下工作。它们看不到观察到的参数在不同时间尺度上的 "行为"。

Expert Advisors 无法从数据阵列(例如环形缓冲区)中记录的数值变化历史中提取有意义的信息。

环形缓冲区允许 "观察 "当前时间段内数值的变化,但如果不能提取变化的特征,则无法有效使用环形缓冲区。

合成签名机制的出现将把智能交易系统提升到一个新的水平。用户将能在其程序的交易条件内设定市场参数变化的性质。

这种程序的水平和质量将远远超过我们现在所做的。

 

有趣的文章。

例如,当我在 MT4 中按最后 50 个条形图计算指标时,在测试器中,该指标的运行速度比按所有条形图计算要快得多。

我的印象是,在 MT5 中,这种方法 按最后 n 个条形图计算指标)并没有快很多。谁知道是这样还是我做错了什么?

 
forexman77:

有趣的文章。

例如,当我在 MT4 中按最后 50 个条形图计算指标时,在测试器中,该指标的运行速度比按所有条形图计算要快得多。

我的印象是,在 MT5 中,这种方法 按最后 n 个条形图计算指标)并没有快很多。谁知道是这样还是我做错了什么?

我不太明白计算方法。任何指标的计算都需要 n 个周期。如果 n=50,那么就按最后 50 个条形图计算。那么对所有柱状图的计算又是怎样的呢?
 
Vasiliy Sokolov:
我不太明白计算方法。任何指标的计算都需要 n 个周期。如果 n=50,那么就按最后 50 个条形图计算。那么对所有柱状图的计算又是什么呢?


对最后 n 个条形图的计算是对 50 个条形图的计算,而对所有条形图的计算是对终端中所有可用历史记录Bars-Period_)的计算。在 MT4 中,我使用了这种结构:

P=Period_+10;
  
limit=Bars-counted_bars-1;
if (limit > P)limit=P;//也就是说,如果限值大于 P,那么我们就从数字 P 的条形图开始计算。
for(int i=limit;i>=0;i--)

在 Expert Advisor 中调用指标,不是在每个柱状图上调用,而是在多个条件触发时调用(指标调用 位于多个条件运算符的主体中)。

在 MT5 中,这种方法的优化速度并没有降低多少。

 
forexman77:

有趣的文章。

例如,当我在 MT4 中按最后 50 个条形图计算指标时,在测试器中,该指标的运行速度比按所有条形图计算要快得多。

我的印象是,在 MT5 中,这种方法 按最后 n 个条形图计算指标)并没有快很多。谁知道是这样还是我做错了什么?

唯一的区别是由测试人员准备的 1000 条的初始计算速度。这样,任何经济实惠的指标在 MT4 和 MT5 中的运行速度都一样快。

 
Andrey Khatimlianskii:

不同的只是测试人员对 1000 个条形图进行初始计算的速度。然后,任何经济上编写的指标在 MT4 和 MT5 中的运行速度都一样快。

说到速度,MQL 不是用手指做出来的,它的计算速度非常快。快到不容易超越标准解决方案。以 ArrayMaximum/ArayMinimum 为例。这两个函数都是通过完全搜索传递的数组来查找最大值和最小值。由于传入数组的元素总是未知的,因此不可能减少这种计算。本文介绍了极值搜索的优化变体。由于其中的值是按顺序到达的,因此可以通过编写优化算法来减少搜索量。不过,这种优化算法的优势只有在序列足够大时才会显现。如果数列不大,只有 5-10-20 个元素,那么两种算法的效果都一样好。我的意思是,默认情况下,开发人员会提供非常快的解决方案,而且通常不可能对其进行改进,这就是为什么我强烈建议初学者 不要使用他们认为可以加快代码速度的编程结构技巧。
 
Vasiliy Sokolov:
使用他们认为可以加快代码速度的编程结构。

在 MT4 中,在这种扭曲的帮助下,优化速度快了很多倍,但我似乎看不到。很可能我在 MT5 中做错了什么。

也许根本不是指标的问题,而是 EA 的问题。

 
forexman77:

在 MT4 中,有了这个转折的帮助,优化速度快了很多倍,我不这么认为,我看得出来。很有可能我在 MT5 中做错了什么。

也许根本不是指标的问题,而是 EA 的问题。

瓦西里说的是初学者。90% 的 MT 测试器和优化器用户不会真正需要它。
 
forexman77:


对最后 n 个条形图的计算是对 50 个条形图的计算,而对所有条形图的计算是对终端中所有可用历史记录Bars-Period_)的计算。我在 MT4 中使用的就是这种结构:

在 Expert Advisor 中调用指标,不是在每个柱状图上调用,而是在触发多个条件时调用(指标调用 位于多个条件运算符的主体中)。

在 MT5 中,这种方法的优化速度并没有降低多少。

只计算最后一个指标值,而不是在出现一个新的刻度线时完全重新计算,这是一个标准的故事,奇怪的是您竟然开始讨论这个问题。更奇怪的是,你还把它说成是你发现的窍门。实际上,这是编写所有指标的标准。文档中也有提及。这就是为什么每个人都在最后一栏/刻度上使用重新计算。