Init()和DeInit()执行顺序 - 页 6

 
Ihor Herasko:


为什么他们会很慢?除非该指标写得很差。一个写得很好的 DeInit指标 需要的时间相当少。此外,TF切换并不是那么频繁的操作。在一些特别严重的情况下(对于 "错误的 "指标),你可以在改变TFs时等待一两秒钟。

因此,关于在TF切换过程中的制动的说法是比较可疑的。此外,当你切换到尚未建成的TF时,时间延迟是相当可观的。而且没有人因为终端的刹车而哭泣。

有不同的指标。也有迟钝的。而且,并不是所有的都是自己的和源代码的。

我被几秒钟的时间逗乐了。我在界面上感觉到几十毫秒的时间,我一下子感觉到不舒服。

而且,最重要的是,没有回答我的问题:
在什么情况下,除了直接使用图形对象的工作(标题中没有TF名称),DeInit - Init序列是重要的?

 
Andrey Khatimlianskii:

指标有各种形状和大小。刹车的也是。而且,并不是所有的都是自己的和源代码的。

几秒钟的时间很有趣。你可以在界面上感受到几十毫秒的时间,一下子就有了不适的感觉。

而且,最重要的是,对我的问题没有答案。
在什么情况下,除了与图形对象(名称中没有TF名称)的直接工作外,DeInit - Init序列是重要的?


我通常不使用全局变量,但有时会发生这种情况。

当使用全局变量工作时,我们会得到混乱。当从图表中删除指标时,你需要自行清理并删除全局变量。你在指标的哪个地方删除全局变量?也许,它应该在Deinite中被删除,没有其他地方。因此,当你改变时间框架并创建新的变量时,Deinite就会来擦除一切。事实证明,全局变量不能在指标中使用。

 
Sergey Chalyshev:


我通常不使用全局变量,但有时会发生这种情况。

在处理全局变量时,你会变得波澜不惊。当你从图表中删除指标时,你需要自行清理并删除全局变量。你将在指标的哪个地方删除全局变量?也许,它应该在Deinite中被删除,没有其他地方。因此,当你改变时间框架并创建新的变量时,Deinite就会来擦除一切。事实证明,全局变量不能在指标中使用。

谢尔盖,你有一个真实的例子,不是凭空捏造的吗?我也能想到这样的例子,但我在实践中没有遇到任何问题。

注意:全局变量也可以根据TF来命名。

 
Andrey Khatimlianskii:

指标有各种形状和大小。刹车的也是。而且,并不是所有的都是自己的和源代码的。

几秒钟的时间很有趣。界面感觉有几十毫秒,不适感立即出现。

而且,最重要的是,对我的问题没有答案。
除了与图形对象的直接工作(标题中没有TF名称),在什么情况下,DeInit - Init序列是重要的?

在第3页,我举了一个实际的例子。
我想到的第一件事是,在我的deinit中,以前的状态(按钮被按下/释放)被保存在全局变量中,然后按钮根据inits中保存的值被设置。而就是这些按钮并不总是能正确复位。这是我记得的第一件事,我可能会发现其他东西......
 
elibrarius:
在第3页,我举了一个实际的例子。

在每次改变相关变量时,在终端头中记忆,而不是在ini/deinit时。
 
Andrey Dik:

记住在每次改变相应的变量时,在主终端中,而不是在ini/deinit时。

我会记住的)
还要记住,在目前的实现中,在Deinit中不能做任何事情,然后必须使用(既不能在全局变量中,也不能写到文件中)......

在这样一个破碎的序列中,Finci本质上已经变得毫无用处。

我会记住的(好在我偶然发现了这个话题),但其他程序员(他们不会看这里)会利用自然的逻辑结果,使用Deinit,希望它能成功,然后init会在一个新的TF上运行。

 
elibrarius:

我会记住的)
还要记住,目前终端的实现不允许在Deinit中做任何以后应该使用的事情(既不在全局变量中,也不在文件中)......

基本上是一个无用的finkzi,有这样一个破碎的序列

只要明白还有其他的逻辑。尤其是MT开发者的逻辑。根据这一点,其他的逻辑一切看起来都很合乎逻辑。因此,结论是:适应这个逻辑,不要试图改变那些在这方面可能比你更有经验的人的想法。它是无用的...没有人会同意为了一个指标而改变既定的逻辑。
 
好吧,我不是第一个有这个问题的人,所以这不是为了一个指标。我已经为自己解决了这个问题,但其他人可能也踩到了同样的耙子。直接把耙子移走不是更好吗,这样就不会有其他人踩到它了。
 
Alexey Viktorov:
只要明白还有其他的逻辑。尤其是MT开发者的逻辑。根据这个,其他的逻辑,一切看起来都很合乎逻辑。因此,结论是:适应这个逻辑,不要试图改变那些在这方面可能比你更有经验的人的想法。它是无用的...没有人会同意为了一个指标而改变既定的逻辑。


如果不是关于金融,也许就不会有这样的讨论。

由于交易顾问依赖于一个或另一个指标,它将因为TF的简单切换而简单地停止正常工作。这是最有压力的事情。

那么,你怎么能把你的财务状况交给他呢?

在这个问题上,我们可能与MT的开发者有分歧。
 
Andrey Khatimlianskii:

想象一下,如果 改变TF之前,终端等待旧TF的所有指标的卸载,然后才建立和初始化新的TF,那么图表会有多慢。

在什么情况下,除了直接使用图形对象的工作(名称中没有TF的名称),DeInit - Init序列是重要的?

你们都在混淆很多不同的事情。让我们就终端作为关键软件的至少两个要求达成共识。

- 它必须可预测地工作,严格遵循相同的逻辑(即使有多线程)。

- 它必须快速工作。

(指标的副本是否知道其他副本并不重要,重要的是分配给终端存储的全局数据应该是一致的--这是终端关注的问题,而不是每个指标开发者关注的问题)

此外,还有一个问题--如何实施它。现在它的实施考虑到了要求2。我建议在考虑到要求1的情况下实施它,而不影响要求2。

如果我们注意到图表的启动/退出和指标的启动/退出是不同的事情,就不会有明显的减速现象。图表将立即显示主要的新图表,但对于传统的指标,OnInit事件将在之前的OnDeinit处理后排队。反正事件在终端中是 排队的。

如果MQ愿意,可以按他的条件给我发送NDA类和序列的图表,我将对其进行修正;-)。