使用自定义指标时的EA加速理论(功能-iCustom)。 - 页 6

 

亚历山大-劳尔,也就是说,只要脚本/顾问在运行,内存就会被保留,不能被清除--可悲的结论。
一个脚本是否可以运行另一个脚本,然后关闭正在运行的脚本应该导致内存被清空,或者说这将被认为是一个复杂的处理环境?

 
-Aleks-:

亚历山大-劳尔,也就是说,只要脚本/顾问在运行,内存就会被保留,不能被清理--可悲的结论。
是否可以运行另一个脚本,然后关闭正在运行的脚本应该会导致内存清空,还是会被认为是一个复杂的数据处理环境?

我立即建议" 在专家顾问运行的情况下打开图表",这可以做到 - ChartOpen + ChartApplyTemplate

唯一的问题是,在关闭它(删除专家顾问)时是否会释放内存。

看看吧。

 
Andrey Khatimlianskii:

我立即建议" 在专家顾问运行的情况下打开图表",这可以做到 - ChartOpen + ChartApplyTemplate

唯一的问题是,在关闭它(删除专家顾问)时是否会释放内存。

检查。

我已经手动试过了,把有很多指标的模板改成几乎是空的--效果是有的(但缓存仍然存在--我想这不是关键)。但如何通过一个模板脚本进行打开和关闭 - 我不知道。我理解的疑点是,只要脚本在运行,内存就不会被清除......。安德烈,请帮忙做一下实验。
 

还有一个问题,指标内计算 的实际缓冲区类型的选择是否影响图形缓冲区的大小?

类型

字节大小

最小正值

最大值

表达的准确性

C++中的模拟

浮动

4

1.175494351e-38

3.402823466e+38

7位有效数字

浮动

8

2.2250738585072014e-308

1.7976931348623158e+308

15位有效数字


还有一个疯狂的想法,如果我们用TextOut 来代替图形缓冲区,会怎么样呢--只是不知道如何从中读取数据

 
-Aleks-:

还有一个问题,为指标内的计算 选择真实的缓冲区类型是否影响图形缓冲区的大小?

你说的 "图形缓冲器 "是指普通指标的图形显示吗?
 
Dennis Kirichenko:
你所说的 "图形缓冲器 "是指常规指标的图形显示吗?

问题是,如果你在指标代码中使用 float 而不是double 进行计算,是否有可能影响分配给图形缓冲区的内存大小一栏。

//---- buffers

double Vy[];
double bufDirSoft[];

extern int n=3;
extern int BarsN=100;
//----
int ExtCountedBars=0;

 
另外,如何判断内存是否用完,是否有什么功能?
 
-Aleks-:

问题是,如果你在指标代码中使用float而不是double进行计算,是否有可能影响分配给图形缓冲区的内存大小一栏?

不,有一个神奇的功能,可以取代所有的尝试。

bool  SetIndexBuffer(
   int                    index,         // индекс буфера
   double                 buffer[],      // массив
   ENUM_INDEXBUFFER_TYPE  data_type      // что будем хранить
   );

这种机制是内置于终端语言本身的。这是个有趣的想法,虽然...

 
-Aleks-:
另外,如何判断内存是否用完,是否有什么功能?

你说内存用完了是什么意思?:-)

这里有一些东西。

https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus#enum_terminal_info_integer

在我看来,管理指标资源内存的最有效方法是最小化 "历史最大条数 "参数(设置-->图表)。在我的记忆中,该参数的最小值是5K。

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
-Aleks-:
另外,我怎样才能知道内存是否用完了,是否有什么功能?

有可能检索到有关终端的信息

终端内存总数

终端(代理)进程可用的内存大小,单位:MB

䵮䵮

终点站_内存_可用

终端(代理)进程的可用内存大小,单位:MB

䵮䵮

已使用的终端内存

终端(代理)使用的内存大小,单位:MB

䵮䵮