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

 
你能告诉我是否有办法改变h4和d1条的开盘时间?粗略地说是为了模拟时区的变化。也许是一个基于H1时间框架建立离线图表的脚本或类似的东西。
 
Artyom Trishkin:

处决不能被赦免。

错误是什么?

在这里。

正如你所看到的,你不能把一个本地声明的结构传递给一个函数。

 
vladnev:
你能告诉我是否有办法改变h4和d1条的开放时间?粗略地说是模仿时区的变化。也许是一个基于H1时间框架建立离线图表的脚本或类似的东西。
iOpen(Symbol,нужный таймфрейм,номер бара(счёт идёт справа налево))

我们需要与此合作

 
Seric29:

在这里。

正如你所看到的,你不能把一个本地声明的结构传递给一个函数。

你把结构定义和变量声明 与该结构的类型混为一谈。
 
Artyom Trishkin:

你能自己检查一下吗?这很难吗?而为什么要写得太多呢?

我还没有检查。是 什么阻止了你?

Artyom,这个选项真的行不通。该结构必须在全局变量 层面进行定义。而一个结构类型的变量在任何地方都是。那么就有可能通过引用来传递它。因为传入的函数参数中的类型将不会被定义。

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
   struct MyPoint
     {
      int         x[5];
      int         y;
     }gw777; // Переменная глобального уровня, просто лишняя.
int OnInit()
  {
   MyPoint qw1; // Локальная переменная
   EqualPointsP(qw1);// передал структуру в функцию EqualPointsP
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool EqualPointsP(MyPoint &qw)
  {
   Print("EqualPointsP ");
   return true;
  }
 
Artyom Trishkin:
你混淆了结构的定义和变量的声明 与这个结构的类型。

意义。你的意思是,结构必须在全局范围内声明,即在代码之外,而结构的定义不能在代码内部描述,即在本地描述;只有变量可以这样创建,还是我理解错了什么?请解释。

 
Alexey Viktorov:

Artyom,这个变体真的不会起作用。该结构应在全局变量 的层面上进行定义。而一个结构类型的变量在任何地方都是。那么就有可能通过引用来转移。因为函数的传入参数中的类型不会被定义。

所以它毕竟是全球性的。

 
Seric29:

所以它毕竟是全球性的。

不。一个结构是一个用户定义的类型。因此,这种类型必须到处都有。而一个自定义类型的VARIABLE可以在右脚的左小指想要的地方声明,并把这个变量传到心爱的狗想要的地方,但只能通过引用。

 
Alexey Viktorov:

这样一来,这个结构就不会起作用了,阿尔乔姆。该结构必须在全局变量 层面进行定义。而结构类型的变量是任何地方。那么就有可能通过引用来转移。因为传入的函数参数中的类型将不会被定义。

 

一般来说,由于Artyom没有回答任何问题,而上面那个人给出的答案是,函数是与必须知道的结构一起工作的,因此必须全局声明,所以我们得出结论,结构必须全局声明。

就其性质而言,一个与结构一起工作的函数只能接受相同的静态结构。这意味着不可能在本地声明一个结构,使其具有有限的范围并将其传递给函数。

原因: