在后面的测试中发现问题,找不到根本原因! - 页 4

 
GumRai:

将允许在闭合的条形图上进行不同的计算,而不是在当前条形图上进行计算。

它在一个新条形图的第一个刻度上所做的是

在同一个条形图的后续刻度上,它将计算出

这是一种复利的计算方式

亲爱的GumRai。

当前的条形图,即Bar[0]对于重新画图是必要的。因此,这个话题是关于观察到的历史条形图与重新绘制的问题,可能是Bar[8],...Bar[3],...,或Bar[1]。

你可以看到指标的主要内容只有10行左右的代码。

但是,我们仍然很难找到重新绘制历史条形图的根本原因

这很奇怪,我很困惑,怎么会用这段代码重新绘制历史条形图呢?

 

正如我所说的,该指标在每一个tick 上使用同一个bar的前一个tick所计算的值来重新计算bar[0]。

当测试器运行时,该指标将以伪实时方式进行计算,即使该指标实际上不在图表上。

当测试器完成后,指标被添加到图表中,我相信它不会考虑所有的点,因为它每条街只计算一次。

试着把指标放在可视化模式下的图表上。

 
jollydragon:

亲爱的ffoorr,我无法打开网页,也无法访问网站,www.forex-tsd.com。也许我的网络配置有一些问题。

请让我们把注意力集中在我的代码上。它的主要内容只有10行左右的代码。

但是,我们还是很难找到历史条形图重新绘制的根本原因。


减少缩放以访问TSD上的页码。


指标更好

 
GumRai:

正如我所说的,该指标在每一个勾股中都使用同一个勾股中的前一个勾股所计算的值来重新计算bar[0]。

把指标放在可视化模式下的图表上试试吧。

GumRai,请参考我以前的帖子。

.bar[0]被重新绘制是没有问题的,因为这是必要的。

.对于这个话题,主题或问题是为什么bar[0]左边的历史条被重新绘制,这是不应该的。我已经在图表中观察到了,并且已经粘贴了截图。

亲爱的各位,请让我们把注意力集中在我的代码上,通过找出根本原因来共同提高自己。我不需要任何更好的指标,但我想知道根本原因!

谢谢你的理解和支持。

 

你似乎不明白我在告诉你什么。

我不知道这是因为我没有解释清楚,还是你没有正确阅读我的帖子。

当你重新初始化指标时,整个指标是基于每个柱状图的一个刻度重新计算的,而在实时情况下,它是基于一个柱状图的多个刻度。

因此,如果该指标是在实时情况下绘制的,然后再重新初始化,就会有差异。

 
GumRai:

你似乎不明白我在告诉你什么。

我不知道这是因为我没有解释清楚,还是你没有正确阅读我的帖子。

当你重新初始化指标时,整个指标是基于每个柱状图的一个刻度重新计算的,而在实时情况下,它是基于一个柱状图的多个刻度。

因此,如果该指标是在实时情况下绘制的,然后再重新初始化,就会有差异。

对不起,英语不是我的母语。

无论它是在重新初始化时绘制还是在实时绘制,每个历史条都是基于最后一个tick计算的。

因此,历史条形图应该被冻结为相同的。对吗?如果你在实时图表中用M1观察一段时间的指标,如何能观察到差异或重新绘制的情况?

 
看来这不是一个简单的问题,超出了许多编码专家的能力范围。
 

好吧,对我来说,这似乎是一个简单的问题,只是你不了解答案。

试试附件中的代码,我希望你能看到发生了什么

我只是将指标的绘制循环改为

   for(i=limit-1; i>=0; i--)
     {
      ExtBuffer1[i]=1.1*Fish1;
      Fish1=ExtBuffer1[i];
      if(Fish1>=EMPTY_VALUE)
         Fish1=1;
     }

和Fish1的初始值

Fish1=0.00001;

在M1图表上运行它,有规律的点击。你会看到各种峰值的形成。

重新初始化该指标,你会看到所有这些峰值都消失。

此外,如果你有一个不太好的网络连接,它错过了一个条形图,整个指标会被重新计算,所以峰值会消失。

你明白为什么吗?

附加的文件:
 
GumRai:

好吧,对我来说,这似乎是一个简单的问题,只是你不了解答案。

试试附件中的代码,我希望你能看到发生了什么

我只是将指标的绘制循环改为

和Fish1的初始值

在M1图表上运行它,有规律的点击。你会看到各种峰值的形成。

重新初始化该指标,你会看到所有这些峰值都消失。

此外,如果你有一个不太好的网络连接,它错过了一个条形图,整个指标会被重新计算,所以峰值会消失。

你明白为什么吗?

亲爱的GumRai。

看来你明白了我的意思。

请参考下面的屏幕截图。在我右键点击你的指标并选择 "刷新 "后,峰值的位置发生了变化。

然而,我仍然看不出原因。这就是为什么我不能在我的重绘指标中找到根本原因。

.根据你修改的指标,我理解它应该画一条指数线。为什么它画的是有间隔的峰值?是不是因为有 "空值"?

.为什么刷新后峰的位置会改变?

.我还是看不出峰的消失。如何 "重新初始化 "它?

在刷新之前。

刷新后。

 
jollydragon: 然而,我还是不明白为什么。这就是为什么我在重绘指标中找不到根本原因。

   for(i=limit-1; i>=0; i--)
     {
      ExtBuffer1[i]=1.1*Fish1;
      Fish1=ExtBuffer1[i];
      if(Fish1>=EMPTY_VALUE)
         Fish1=1;
     }

对于每一次迭代,(除了第一次,)Fish1 是前一个缓冲区元素的值,但你并没有将它初始化为ExtBuffer1[limit]

所以对于最初的迭代(当limit == bars),你设置ExtBuffer1[0] = 1.1*ExtBuffer1[1]

但是,对于随后的ticks(当limit == 1时),你设置ExtBuffer1[0] = 1.1*0.00001