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

 
Seric29:

例如,我声明了输入参数,我需要从这些参数中获取全局变量并查看它们,但有一个问题 输入参数不能是一个数组

如果我们谈论的是输入变量,你可以简化它--它们有一个全局可见性,你可以在任何代码部分使用它们

或者在OnInit()部分将它们写一次到数组中,以后你可以 数组复制到 数组中,但这里你需要数组是相同的--拿一个数组做备用,但这时你需要控制数组索引数以避免出现错误--你可能使用一个空的数组值--编译器不会产生错误,但计算会出现错误

input int a1=1;
input int a2=2;
input int a3=3;

int ArrayOfInput[3];
int OnInit()
  {
   ArrayOfInput[0] =a1;
   ArrayOfInput[1] =a2;
   ArrayOfInput[2] =a3;
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
 // delete cx;
  }
//+------------------------------------------------------------------+
void OnTick()
  {
      int arr[3];
      ArrayCopy(arr,ArrayOfInput);
  }
//+------------------------------------------------------------------+
HH:不知道为什么,我确信赋值运算符对相同的数组有效,也许我把类弄混了--如果对象是同一类的,它肯定是有效的。
 
Igor Makanu:

如果我们谈论的是输入变量,你可以简化它 - 它们具有全局可见性,你可以在任何代码部分使用它们

或者在OnInit()部分将它们写一次到数组中,以后你可以 数组复制到 数组中,但这里你需要数组是相同的--拿一个数组备用,但这时你需要控制数组索引数,以避免出现错误--你可以使用一个空的数组值--错误不会出现,但计算会出现错误

SZZ: 不知道为什么,我确信赋值运算符对相同的数组起作用,也许是和类混在一起了--如果对象是同一类,它当然起作用。

没有也有这样的我试过(也许是试了一点,而且试得不好,因为我不是很擅长,但就我试的情况来看,它不起作用,再加上对所有的类都需要通过冒号来处理,最好是像你展示的那样在这里做)认为也许通过类是没有必要的,所以你就是这样做的,一行一行地分配。

 

你好。

你能告诉我是否有可能在标准警报弹出窗口中改变时区

我需要使警报的时间与终端的时间同步(当终端和警报窗口的时间不同时)。这有可能吗?
 
为什么在mql4中你可以用同样的方式调用int(和任何其他可返回值)和void(程序性函数),怎么会这样?
 

问题。我怎样才能以非等价的步骤循环浏览所有枚举值


enum Types {

一=11。

2=12。

三=15。

四=22。

五=27

};

 
The_Sheikh:

问题。我怎样才能以非等价的步骤循环浏览所有枚举值


enum Types {

一=11。

2=12。

三=15。

四=22。

五=27

};

不,sizeof()对enumhttps://docs.mql4.com/ru/basis/types/integer/enumeration 不起作用。

并且在转换类型时,常量名称会丢失

enum Types { One=11, Two=12, Three=15, Four=22, Five=27,Six = 111,Seven = 222};
enum Types_abc { a, b, c, d, e,f,g};
void OnStart()
  {
   int sz = sizeof(Types);
   Print("sz = ",sz);
   Types z = Two;
   Types_abc x = b;
   Print("z = ",EnumToString(z)," , x = ",EnumToString(x));
   x = (Types_abc)z;
   Print("z = ",EnumToString(z)," , x = ",EnumToString(x));
  }

2019.08.03 10:52:13.288 tst EURUSD,H1: sz = 4

2019.08.03 10:52:13.288 tst EURUSD,H1: z = Two , x = b

2019.08.03 10:52:13.288 tst EURUSD,H1: z = Two , x = Types_abc::12


 
Elena Baranova:

你好。

请告诉我是否可以在标准弹出的警报中改变时区?

我需要使警报的时间与终端的时间同步(当终端和警报窗口的时间不同时)。这有可能吗?
警报显示的是PC上的当地时间。为了使其与终端时间相匹配,你可以简单地改变计算机时间
 
Seric29:
为什么在mql4中你可以以同样的方式调用int(和其他任何可返回值)和void(程序性函数)函数?

这就叫 "重载"。

Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Обычно в названии функции стремятся отобразить ее основное назначение. Читабельные программы, как правило, содержат разнообразные и грамотно подобранные идентификаторы. Иногда различные функции используются для одних и тех же целей. Например, рассмотрим функцию, которая вычисляет среднее значение массива чисел двойной точности, и такую же...
 

你好。如何在代码中捕捉照明器指示灯的输入信号?该指标在图表上画出一个蜡烛,并输出一个进场警报。

简单地说,我想为这个指标写一个机器人

 
Alexey Viktorov:
警报显示PC上的本地时间。要把它设置为与终端时间相同的时间,你可以简单地改变计算机时间。

谢谢 )这是唯一的方法,没有其他方法可以在Alert中设置时间吗?还有,除了MQL4中的标准Alert()函数 外,是否有其他替代方法,可以将警报时间设置为终端时间?

原因: