新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 649

 
Artyom Trishkin:

2."超过零 "是什么意思?

意味着缓冲区内有一些价格,否则缓冲区内就没有价格。

阿尔乔姆-特里什金

在数据窗口中,该指标的缓冲值显示的是什么?

价格 或没有。
 
Ghabo:

意味着缓冲区内有一些价格,否则缓冲区内就没有价格。

EMPTY_VALUE 是一个 "空 "缓冲区的值,许多指标默认使用这个值,它的值是DBL_MAX--而且这个值比零大得多。这就是我问的原因。

试着检查 if(M_A > 0 && M_A < EMPTY_VALUE)

 
Artyom Trishkin:

EMPTY_VALUE 值,即许多指标默认使用的 "空 "缓冲区值,其值为DBL_MAX--远远大于零。这就是我问的原因。

尝试检查是否(M_A > 0 && M_A < EMPTY_VALUE)

这些信号是如此的存在。就是这个吗?

void OnInit() {
  time=Time[0];
}
//////////////////////////////
if(М_А>0 && M_A < EMPTY_VALUE)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

那么,在启动时不会有警报,但在连接指标的条上会有信号出现?

我很怀疑,在初始化时,时间已经等于酒吧的开放时间

如何决定?

 
Ghabo:

这些信号是如此的存在。就这些吗?

因此,在启动时不会有警报,但当信号出现在指标所连接的条上时就会有警报?

我怀疑这一点,在初始化时,时间已经等于酒吧的开放时间

如何解决?

删除OnInit()中的初始化时间。

void OnCalculate()
  {
   static datetime time=0;
//---
   if(М_А>0 && M_A < EMPTY_VALUE)  
     {
      if(time!=Time[0])
        {
         time=Time[0]; 
         AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
        }
     }
  }
 
Taras Slobodyanik:

所以,它都已经设置好了,只需要添加写作/阅读

这个代码是否有效或应该有效?从全局变量 中检索出真实的ID后,我有分歧。如果可以的话,以指标的形式举个例子。谢谢你。
 
inter78:
这个代码是否有效或应该有效?我从一个 有真实ID的全局变量 中检索后,出现了分歧。如果可能的话,以指标的形式提供一个例子。谢谢你。

我的代码,对我有用,我看不到你的代码。
请)。

 

关于交易、自动交易系统和策略测试的论坛

对MQL4新手的任何问题,对算法和代码的帮助和讨论

Taras Slobodyanik, 2018.10.05 11:01

嗯,全局变量并不复杂。
- 变量名将是前缀+符号+周期,值=图表ID
- 当你开始的时候,搜索带有你的前缀的变量,并比较援助性的变量。
- 如果一个图表不是我们的,我们检查这样的图表是否存在;如果它不存在,我们删除变量
- 如果一个图表是我们的,我们从名称中取出一个符号和一个句号,同时删除变量(或重写)。



我试图帮助我的读者理解变量的前缀的含义及其用途。请给我一个例子,如何创建这样一个全局变量。

它说GPT可以存储4周,这是否即使在终端关闭的情况下也是如此?

 
psyman:

我在帮助中找不到任何关于变量前缀是什么或者为什么需要它的信息。请给我一个如何创建这样一个全局变量的例子。

它说GPT可以存储4周,即使终端关闭也是如此?

我的意思是名称中的前缀是为了能够识别哪里是自己的变量,哪里是别人的变量,前缀可以一次性删除所有变量。

int  GlobalVariablesDeleteAll( 
   string     prefix_name=NULL,     // все глобальные переменные, чьи имена начинаются с префикса 
   datetime   limit_data=0          // все глобальные переменные, которые изменялись ранее ранее указанной даты 
   );

例如:

string   GV_prefix="ZZ_";                                               //префикс имени для всех своих
string   prefix_gv=GV_prefix+_Symbol+"_"+TFtoStr(ind_period)+"_";       //префикс имени для конкретного символа и периода

GlobalVariablesDeleteAll(prefix_gv); //удалить все переменные со своим префиксом


   //создание и запись глобальных переменных в цикле
   int num=0;
   for(int i=lines_all-1;i>=end;i--)
      {
      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      
      name=prefix_gv+"TimeBeg_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_start);
      
      name=prefix_gv+"TimeEnd_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_end);
      
      name=prefix_gv+"Visible_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].visible);
      
      name=prefix_gv+"Direction_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].direct);
      
      num++;
      }


ps.你也可以在名字中存储/提取信息

 

现在我们知道我们在谈论什么了。

=变量名称是前缀+符号+周期,值=图表ID

为什么这么复杂?如果你只想存储周期,你可以用图表的id 来命名它。

 
psyman:

现在我们知道我们在谈论什么了。

=变量名称是前缀+符号+周期,值=图表ID

为什么这么复杂?如果你想只存储一个周期,你可以命名一个图表ID。

我只是把它作为一个例子来写)

如果你不需要记住这个符号,你就不需要记住它。

如果名字只是一个图表的ID,如何删除不必要的变量?
(如果经常使用,会有很多变数)

如果你不需要前缀--同样的事情,你如何删除不必要的变量?