文章 "MQL5 编程基础: 终端中的全局变量" - 页 2

 
Andrey F. Zelinsky:

希望该文章能对此做出澄清:

1.-- 全局变量 的存储方式和位置(内存、光盘)

2.-- 这些全局变量的读取频率

-- 等等。

遗憾的是,我没有在文章中找到这些问题的答案。


1.在 "GlobalVariablesFlush 函数 "一节中有一些相关内容。

2.没有禁止的都是允许的。

 
Dmitry Fedoseev:

1.在 "GlobalVariablesFlush 函数 "一节中有一些相关内容。

2.没有禁止的都是允许的。

我感兴趣的是在操作过程中变量是如何存储的--内存/磁盘--以及变量的写入/读取频率对磁盘有多重要。

当终端突然关闭时,变量会发生什么变化。

总之,这些问题如果能在文章中或在这里的讨论中得到澄清,将会非常有用。

我记得论坛上有这方面的内容,但我找不到时间地点和内容了。

 
Glob.variables 是不错,但你需要一个更好的 :-)我想要一个类似的变量,但要在图表命名空间中。
 
Andrey F. Zelinsky:

我对操作过程中如何存储变量(内存/磁盘)以及变量的写入/读取频率对磁盘的重要性很感兴趣。

当终端突然关闭时,变量会发生什么变化。

总之,这些问题如果能在文章中或在这里的讨论中得到澄清,将会非常有用。

我记得论坛上有人说过这个问题,但在哪里、什么时间、说了些什么,我找不到了。

这里 有一些东西。作者甚至在那里测试了一些东西......

Основы программирования на MQL5 - Глобальные переменные терминала
Основы программирования на MQL5 - Глобальные переменные терминала
  • 2014.11.03
  • //www.mql5.com/ru/users/denkir">
  • www.mql5.com
В данной статье демонстрируются объектно-ориентированные возможности языка MQL5 по созданию объектов, отвечающих за работу с глобальными переменными терминала. В качестве практического примера рассматривается ситуация, когда глобальные переменные могут использоваться как контрольные точки выполнения этапов программы.
 
Dennis Kirichenko:

这里 有些东西。作者甚至在那里测试什么......

我不明白 网站上有两篇相同的文章?

Fedoseev的和你的,连标题都一样?

и


 
Andrey F. Zelinsky:

我对操作过程中如何存储变量(内存/磁盘)以及变量的写入/读取频率对磁盘的重要性很感兴趣。

当终端突然关闭时,变量会发生什么变化。

总之,这些问题如果能在文章中或在这里的讨论中得到澄清,将会非常有用。

我记得论坛上有关于这方面的内容,但我找不到时间、地点和内容。

"GlobalVariablesFlush 函数" 一节中有相关内容

它们存储在一个文件中。当关闭终端或调用 GlobalVariablesFlush() 时,文件将重置为磁盘。

关于硬盘的使用寿命,众说纷纭,甚至有人认为其使用寿命超过 170 年。不知道当你在电脑上听音乐或看视频时,是否也在思考同样的问题?使用全局变量,你甚至无法实现播放音乐或视频时对光盘造成的一小部分负荷。而在使用互联网时,点击一个链接,你知道有多少文件会立即保存到光盘中吗?但在使用互联网时,没有人会考虑光盘的负荷。

定期进行碎片整理可以大大减少光盘的负荷。此外,稳定的电源(但笔记本电脑不存在这个问题)和温度机制(但你对此无能为力)。

***

在论坛上有关于 GlobalVariablesFlush 的讨论,终端开发人员写道他们禁用了那里的某些功能,但被误解了。他们禁用了直接重置到磁盘的功能。在此之前,重置是通过操作系统直接重置到磁盘上的。现在,重置是通过操作系统完成的。这样就可以在操作系统决定重置时进行重置,而不是在函数调用时立即重置。如今,计算机突然断电是一种不现实的现象。

 
Maxim Kuznetsov:
Glob.variables 是不错,但你需要一个更好的 :-)我想要一个类似的变量,但要在图表命名空间中。
可以通过全局变量 的前缀来解决这个问题。
 
Andrey F. Zelinsky:

我不明白--网站上有两篇一模一样的文章?

哇,真是奇迹!
 
Andrey F. Zelinsky:

我不明白--网站上有两篇相同的文章?

费多谢耶夫的和你的--甚至标题都一样?

是啊,真有意思,我还是第一次看到....。

德米特里,一如既往的系统和详细。尊重

 
Maxim Kuznetsov:
Glob.variables 是不错,但你需要一个更好的 :-)你想要一个类似的变量,但要在图表命名空间中使用。

那就在命名空间级别使用吧)

我的实现方法略有不同,但都很实用:

//===============================================================================================
//----------------------- 创建并返回全局变量的名称 -----------------------+
//===============================================================================================
string GetGlobalVariableName(string name="", string symb="0") {
 if(symb=="0") { symb=_Symbol;}
  if(!IsTesting()) {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+WindowExpertName()+"_"+name);
  } else {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+WindowExpertName()+"_tester"+"_"+name);
 }}

应用起来同样简单:

// 在这里,我们用名称写下所需的内容
if(если больше то) {
 GlobalVariableSet(GetGlobalVariableName("LastAmountPos"),с);
}
// 在这里,我们得到的名称是一样的
int pos_count = GlobalVariableGet(GetGlobalVariableName("LastAmountPos"));

你可以"pos_count " 名称级别的 任何地方获得一个值

总的来说,应用没有任何限制,非常简单、快速和方便,为此非常感谢 MC!