mql5语言的特点、微妙之处以及技巧 - 页 132

 
Igor Makanu:

包裹在指标的类计算中--将缓冲区与类字段绑定在一起

唉......。
这并不奏效。即使缓冲区在类和句柄内部,所有创建的内部中间计算缓冲区仍然在RAM中,即使在类实例被删除之后。

只有通过改变TF才能清除记忆。

显然缺少按手柄清理内存的命令。例如,MemErase( int handle)。

 
Nikolai Semko:

唉......。
这并不奏效。即使缓冲区在类和句柄内部,所有创建的内部中间计算缓冲区仍然在RAM中,即使在类实例被删除之后。

只有通过改变TF才能清除记忆。

显然缺少的是一个旨在通过手柄清除内存的命令。例如,MemErase( int handle)。

1.你是否检查过一个对象指针和一个对象实例的组合(我指的是*)?

2.你是否写了析构函数并删除了其中的数组大小?(ArrayFree() 和 ArrayResize(arr,0,0) )

 
Nikolai Semko:

唉......。
这并不奏效。即使缓冲区在类和句柄内部,所有创建的内部中间计算缓冲区仍然在RAM中,即使在类实例被删除之后。

只有通过改变TF才能清除记忆。

显然缺少的是一个旨在通过手柄清除内存的命令。例如,MemErase( int handle)。

而你没有使用指标释放?

但我仍然认为这是一个空洞的承诺。你需要它做什么?绘制动画?那么对于交易呢?对移动平均线 进行平均,直到它达到一条直线?

 
Nikolai Semko:

唉......。
这并不奏效。即使缓冲区在类和句柄内部,所有内部创建的中间缓冲区仍然保留在RAM中,即使在类实例被删除之后。

只有通过改变TF才能清除记忆。

很明显,缺少一个按句柄清除内存的命令。例如,MemErase( int handle)。

终端存储缓存一段时间,即使程序不使用它们。

你可以捕捉到内存被释放的时间。

 
Alexey Viktorov:

您是否使用过IndicatorRelease?

但是,我仍然认为这是浪费时间。告诉我,你需要它做什么?画漫画?那么对于交易呢?对移动平均线进行平均,直到它达到一条直线?

是的,谢谢你,阿列克谢。我已经忘记了这个功能。以前见过,但从未使用过。

我试过了。有些事情出了问题。它把它删除了,但删除后,一切都停止了。

我只是在计算指标 前的DrawSetup()函数中添加了一行代码,参数如下。

IndicatorRelease(handle);
handle=iMA(_Symbol,_Period,per1,0,MaMethod,PriceBase);
for(int i=0;i<N;i++) handle=iMA(_Symbol,_Period,per2,0,MaMethod,handle);

指标根本停止工作,我还不明白原因。

阿列克谢-维克多罗夫

我认为这是一个徒劳的想法。我需要它做什么?画漫画?那么对于交易呢?对移动平均线进行平均,直到它达到一条直线?

我绝对同意你的观点。这只是一个无用的玩具。

 
Andrey Khatimlianskii:

终端会将缓存保留一段时间,即使程序不使用它们。

你可以计算出内存释放所需的时间。

我等了6分钟,仍然没有任何东西被清除。

 
Igor Makanu:

1.你是否检查了对象指针和对象实例的组合(我指*)?

2.你是否写了析构函数并删除了其中的数组大小?(ArrayFree() 和 ArrayResize(arr,0,0) )

1.是的,我是通过指针、新建和删除来做的。

2.所以不存在阵列。也就是说,有内部数组,但它们没有名字。只有手柄号码。

而在for循环的每一次迭代中,句柄变量的值都会增加1。也就是说,内部缓冲区正在被乘以,所有之前的缓冲区都参与了下一个缓冲区的计算。

根据逻辑,我们应该在另一个全新的指标计算之前做IndicatorRelease(handle);,但我已经在上面 写了,这将杀死指标。目前还不清楚原因。

 
Nikolai Semko:

是的,谢谢你,阿列克谢。我已经忘记了这个功能。以前见过,但从未使用过。

试过了。有些事情出了问题。删了就删了,但删了之后,一切都停止了。

我只是在计算指标 前的DrawSetup()函数中添加了一行代码,参数如下。

指标根本停止工作,我还不明白原因。

我绝对同意你的观点。它只是一个无用的玩具。

我不是这么想的。我认为我们应该做几个处理程序,比如说图表枚举器

currChart=ChartNext(prevChart); // на основании предыдущего получим новый график

一旦你得到一个新的手柄,用过的手柄就可以像用过的一样被扔掉了。

 
Alexey Viktorov:

我不是这么想的。我认为你必须做几把,比如说图谱搜索

而一旦你得到一个新的手柄,用过的那个就可以像用过的一样被丢弃了 ...

这是不可能的。

 
Nikolai Semko:

不可能

为什么不呢?