指示器被破坏 - 页 5

 
Rosh:

你说的腐败是什么意思?我刚刚把你的指标附在欧元兑美元M1上, 我没有看到任何数值。


32位客户终端MetaTrader 4显示同样的画面。你确定所提供的指标有效吗?
 
Rosh:

32位客户终端MetaTrader 4的图片也是如此。你确定所提供的指标有效吗?
看起来你下载的是原始版本的示例代码(时间戳为2011.10.11 18:06)。那在25分钟内没有画任何东西。在init()中,它将drawTime设置为TimeCurrent(),并且只在start()中触发任何代码一次(drawTime + 1500 < TimeCurrent())。

第二个版本,时间戳为2011.10.12 06:37,看起来好像应该立即开始绘制。

但是,无论如何,问题显然在几个小时后才开始发生。
 
jjc:
看起来你下载的是原始版本的示例代码(时间戳为2011.10.11 18:06)。这在25分钟内没有画出任何东西。
好吧,我等着
 

32位客户终端MetaTrader 4显示相同的图片。你确定所提供的指标有效吗?

- 是的。我也在32位机器上运行同样的指标,从昨晚开始,大约18小时。这个问题没有发生。

如果你想追究另一个可能的MT4错误,如果你使用Low[i]和High[i]而不是iLow()和iHigh()会怎样?

- 在我的实际代码中使用了iHighest / iHigh / iLowest / iLow等。在示例代码中使用了High/Low,以减少复杂性

 
RaptorUK:
我有一个想法 ......但现在必须出去,我已经把指标添加到一个新的图表中,当我回来时将测试我的想法并发布结果。

好的,刚刚回来,自从我第一次加载指标以来,图表看起来很好 ......然后我尝试了我的想法 ...... 我向上翻页,将图表移到右边,这样新的数据就会被下载 ......然后我试了一下我的想法 .......

这就是我在2011.10.07 19:08 这个主题中的建议。

 
RaptorUK:

好的,刚刚回来,自从我第一次加载指标以来,图表看起来很好 ......然后我尝试了我的想法 ...... 我向上翻页,将图表移到右边,这样新的数据就会被下载 ......然后我试了一下我的想法 .......

好吧,你是在假设条形历史因某种原因而改变,并被回填,而指标受到影响,因为它只在向前的基础上绘制,而不遵循通常的指标行为,在诸如IndicatorCounted()的基础上进行重新计算?
 
jjc:
好吧,你是在假设条形历史因某种原因而改变,并被回填,而指标受到影响,因为它只在向前的基础上绘制,而不遵循通常的指标行为,即在IndicatorCounted()等基础上重新计算?
我还没有看最近的代码。......但是,是的,与你写的内容相类似。
 
RaptorUK:
我还没有看最近的代码。......但是,是的,与你所写的大致相同。

好吧,综上所述,我们似乎有如下的情况。

* 一个正常的指标将使用IndicatorCounted()来确定哪些条形值是 "脏 "的,需要被(重新)计算。

* 当你通过向后滚动向历史添加额外的条形图时,IndicatorCounted()被重置为零。因此,在这一点上,一个正常的指标将重新计算其所有的历史值。

* 这里的指标没有这样做。实际上,它忽略了IndicatorCounted(),只在前进的基础上绘制。

* 出于某种原因,AnkaSoftware的Win64机器定期回填旧数据,但Win32机器却没有。在这种情况下,操作系统可能只是巧合。

* MT4没有根据新添加的条形图调整指标缓冲区,而是依靠指标代码重新计算所有的旧值,因为IndicatorCounted()被重置,这有点顽皮。(然而,这是合理的,因为许多指标的旧条形值的增加可能会影响后续计算。例如,如果你在历史开始时增加了一个额外的条形图,EMA将发生变化,尽管是一个很小的数值)。

 
jjc:

* MT4没有根据新增的条形图调整指标缓冲区,而是依靠指标代码重新计算所有旧值,因为IndicatorCounted()被重置,这有点调皮。

实际上,仔细想想,这是不对的。MT4试图告诉指标重新计算所有数据是有原因的,这种情况很可能在这里适用。

比方说,指标已经运行了一段时间,但随后与经纪商断开连接,并持续了多个柱状。重新连接后,MT4将收到一个tick,并开始为最新的小节绘制指标值。另外,异步地,更慢地,它将接收断开连接时缺失的小节的历史数据。这些数据会被插入到条形历史的中间,因此任何正常的指标都有必要重新绘制至少从断开连接期间开始的旧值。在实践中,MT4采取 "重绘所有数据 "的做法是可以理解的。唯一值得商榷的是,如果缓冲区的值有可能无效,MT4是否应该自动将其改为EMPTY_VALUE
 

这个问题是否只影响到基于指标的?

其他的呢,比如High[],low[],或者iHigh,iLow,iLowest,iBarshift等等,等等....,这是我比较想知道和清楚的。

原因: