如何在MQL4/MQL5中获得枚举和项目的长度?

 

如何在MQL4/MQL5中获得枚举和项目的长度?

例如,有一个枚举定义。

enum ENUM_FRUIT {APPLE, BANANA, GRAPE};

接下来,我想在循环中使用它。

for (int i = 0; i < length_of_enum; i++) {
  Print(EnumToString(get_enum_item(i)));
} 

如何实现这一要求?

我已经搜索了论坛和代码库,但没有得到答案。

:-(

 
Xiangdong Guo:

如何在MQL4/MQL5中获得枚举和项目的长度?

我已经搜索了论坛和代码库,但没有得到答案。

:-(

你说的 "枚举的长度 "是什么意思?

你能提供一个使用的例子来理解你的问题吗 - 可能枚举不是你要找的?

 
Carl Schreiber:

你说的 "enum的长度 "是什么意思?

你能提供一个用法的例子来理解你的问题吗--可能enum不是你要找的东西?

我更新了我的问题。
 
int ArrayCopyRates(double& dest_array[], string symbol=NULL, int timeframe=0)
从图表RateInfo数组中复制比率到二维数组,二维数组有6个元素。
0 - 时间。
1 - 开盘。
2 - 低点。
3 - 高点。
4 - 收盘。
5 - 成交量。
注意:通常检索数组用于传递大块数据给DLL函数
参数
dest_array[] - 对二维目标数字阵列的引用。
symbol - 符号名称,默认情况下,使用当前图表符号名称。
timeframe - 时间框架,默认情况下,使用当前图表的时间框架。它可以是任何一个时间框架的枚举值。
样本
double array1[][6];
ArrayCopyRates(array1, "EURUSD", PERIOD_H1)。

Print("Current bar",TimeToStr(array1[0][0]), "Open", array1[0][1])。

从MQL4来看,可能是有用的

 
Maryann T Emmanuel:
int ArrayCopyRates(double& dest_array[], string symbol=NULL, int timeframe=0)
从图表RateInfo数组中复制比率到二维数组,二维数组有6个元素。
0 - 时间。
1 - 开盘。
2 - 低点。
3 - 高点。
4 - 收盘。
5 - 成交量。
注意:通常检索数组用于传递大块数据给DLL函数。
参数
dest_array[] - 对二维目标数字阵列的引用。
symbol - 符号名称,默认情况下,使用当前图表符号名称。
timeframe - 时间框架,默认情况下,使用当前图表的时间框架。它可以是任何一个时间框架的枚举值。
样本
double array1[][6];
ArrayCopyRates(array1, "EURUSD", PERIOD_H1)。

Print("Current bar",TimeToStr(array1[0][0]), "Open", array1[0][1])。

来自MQL4,可能会有帮助

谢谢你,Maryann。

但它不能解决我的问题。

 
Xiangdong Guo:

谢谢你,玛丽安。

但这并不能解决我的问题。

你说的 "枚举的长度 "是什么意思?
 
Xiangdong Guo:

如何在MQL4/MQL5中获得枚举和项目的长度?

你有一个动态枚举吗?如果有,请说明你是如何改变它的。如果没有,为什么你不能在你的代码中设置length_of_enum = 3 - 这是静态的不可改变的变量。
 
Xiangdong Guo:

如何在MQL4/MQL5中获得枚举和项目的长度?

例如,有一个枚举定义。

接下来,我想在循环中使用它。

如何实现这一要求?

我已经搜索了论坛和代码库,但没有得到答案。

:-(

如果你想在一个列表中循环,就用一个数组!

枚举是#define的一种变体。

#define  APPLE 0   
#define  BANANA 1
#define GRAPE  2 
....

枚举是非常有用的,例如,对于输入变量来说

 
  enum Fruit {Apple,Banana,Heineken};
  int err=0;
  int scan=0;
  string item_name;

  while(err==0)
   {
   item_name=EnumToString(Fruit(scan));
   err=GetLastError();
   if(err==0) Alert(item_name);
   scan++;
   }
如果长度未知,这是我得到的最接近的数据。
 
Lorentzos Roussos:
如果长度未知,这就是我得到的最接近的结果
长度从来不是未知的,这个问题只是由一个糟糕的设计造成的。
 
Alain Verleyen:
长度从来都是未知的,这个话题只是由一个糟糕的设计造成的。
错误的设计是什么