指标中的OnDeinit - 页 4

 
eevviill:
好的。Deinit也不做归零工作。

你仍然没有回答这个问题,你说的将缓冲区归零是什么意思?

客户端不对指标缓冲区的内容进行清零。归零应由程序员提供。

指示器被卸载 时,缓冲区会自动被清空

 
stringo:

你仍然没有回答这个问题,你说的将缓冲区归零是什么意思?

客户端不对指标缓冲区的内容进行清零。归零应由程序员提供。

在加载一个指标时,缓冲区被自动删除

 ArrayInitialize(body_up,EMPTY_VALUE);
ArrayInitialize(body_down,EMPTY_VALUE);
ArrayInitialize(shadow_up,EMPTY_VALUE);
ArrayInitialize(shadow_down,EMPTY_VALUE);
  ArrayInitialize(yell_body_up,EMPTY_VALUE);
ArrayInitialize(yell_body_down,EMPTY_VALUE);
ArrayInitialize(yell_shadow_up,EMPTY_VALUE);
ArrayInitialize(yell_shadow_down,EMPTY_VALUE);
它在init和deinit中都不起作用。
 
eevviill:
它在init和deinit中都不起作用。
为什么你在deinit中需要它?而为什么动态 指标阵列 需要被初始化?
 
eevviill:
这在init和deinit中都不起作用。

再一次。

你应该只在全部重新计算之前初始化阵列。而且这只是在你有选择地填充数组 而不是逐个元素的情况下。

 
stringo:

再来一次。

你只需要在总数重新计算前初始化数组。而且这只是在你有选择地填充数组的情况下,而不是一个元素接着一个元素地填充。

eevviill:
这在init和deinit中都不起作用。

为什么你在deinit中需要它?而为什么动态 指标阵列 需要被初始化?

你读过这个问题吗?

 
evillive:
为什么我们在deinit中需要它?还有,为什么要初始化指标的动态数组?

因为在某个地方你必须这样做。Inite说你不能。

因为只有0条被计算在内。在关闭终端 并在几个烛台后打开它,0条被计算+一个更多的条,终端被关闭的时间被抵消。

 
stringo:

再来一次。

你只需要在全部重新计算之前初始化数组。而且这只是在你有选择地填充数组,而不是逐个元素填充的情况下。

不错。我只填写了元素0。

如果你不理解这个问题,我可以再描述一下。

 
eevviill:

因为在某个地方你必须这样做。Inite说你不能。

因为只有0条被计算在内。在关闭终端并在几个烛台后打开它,结果发现0条被计算+另一条,并在终端关闭时有一个转变。

事实上,零条已经被正确计算出来了,但随后历史加载。并计算出了一个新的零条。
 
Vinin:
实际上,零条的计算是正确的,但后来加载了历史记录。并计算出了一个新的零条。

在这里。我为此做了一个缓冲器归零。Inite已经说过你不能这样做。

我想退出。但它在那里也不起作用。为什么?

 
我将尝试再次解释(用手指)。
  1. 终端在上次启动后的X时间内启动了
  2. 启动历史记录下载,该记录缺失(终端闲置了X分钟)。
  3. 对可用的历史记录调用OnCalculate,prevtime=最后已知的历史时间,指标缓冲区 大小为N条。
  4. 在从服务器下载历史记录时,会出现一个勾。
  5. 调用指标的OnCalculate,其中Time[0]是一个tick时间,指标将其记忆为prevtime,指标缓冲区的大小为N+1条(在N和N+1条之间有一个历史间隙)。
  6. 历史记录下载完毕后,再次调用OnCalculate,但这次历史记录中没有漏洞,但prevtime的日期与Time[0]相同--没有新的条形图(分别是没有清除指标中的缓冲区),指标N+X/Timeframe条形图的缓冲区大小和IndBuffer[0]与步骤5中不相同