Как получить длину перечисления и элемента в 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?

Я искал на форуме и в базе кода, но не нашел ответа.

:-(

Что вы имеете в виду под "длиной перечисления"?

Можете ли вы привести пример использования, чтобы понять ваш вопрос - возможно, enum это не то, что вы ищете?

 
Carl Schreiber:

Что вы имеете в виду под "длиной перечисления"?

Можете ли вы привести пример использования, чтобы понять ваш вопрос - возможно, enum это не то, что вы ищете?

Я обновил свой вопрос.
 
int ArrayCopyRates(double& dest_array[], string symbol=NULL, int timeframe=0)
Копирует ставки в двумерный массив из массива RateInfo графика, где второе измерение имеет 6 элементов:
0 - время,
1 - open,
2 - low,
3 - high,
4 - close,
5 - объем.
Примечание: Обычно извлекаемый массив используется для передачи больших блоков данных функциям DLL.
Параметры
dest_array[] - ссылка на двумерный числовой массив назначения.
symbol - имя символа, по умолчанию используется имя символа текущего графика.
timeframe - таймфрейм, по умолчанию используется таймфрейм текущего графика. Это может быть любое из значений перечисления Time frame.
Пример
double array1[][6];
ArrayCopyRates(array1, "EURUSD", PERIOD_H1);

Print("Текущий бар ",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 - open,
2 - low,
3 - high,
4 - close,
5 - объем.
Примечание: Обычно извлекаемый массив используется для передачи больших блоков данных функциям DLL.
Параметры
dest_array[] - ссылка на двумерный числовой массив назначения.
symbol - имя символа, по умолчанию используется имя символа текущего графика.
timeframe - таймфрейм, по умолчанию используется таймфрейм текущего графика. Это может быть любое из значений перечисления Time frame.
Пример
double array1[][6];
ArrayCopyRates(array1, "EURUSD", PERIOD_H1);

Print("Текущий бар ",TimeToStr(array1[0][0]), "Open", array1[0][1]);

Из MQL4, может быть полезно

Спасибо, Maryann.

Но это не может решить мой вопрос.

 
Xiangdong Guo:

Спасибо, Маренн.

Но это не может решить мой вопрос.

Что вы имеете в виду под "длиной перечисления"?
 
Xiangdong Guo:

Как получить длину перечисления и элемента в MQL4/MQL5?

Есть ли у вас динамическое перечисление? Если да, то покажите, пожалуйста, как вы его изменяете. Если нет - почему вы не можете установить length_of_enum = 3 в вашем коде - это статический неизменяемый var
 
Xiangdong Guo:

Как получить длину перечисления и элемента в MQL4/MQL5?

Например, есть определение перечисления:

Далее я хочу использовать его в цикле:

Как реализовать это требование?

Перерыл весь форум и базу кода, но ответа не нашел.

:-(

Если вы хотите просмотреть список, используйте массив!

Перечисление - это своего рода разновидность #define:

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

Enum очень полезен, например, для входных переменных!

 
  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:
Длина никогда не бывает неизвестной, и эта тема является результатом плохого дизайна.
Плохой дизайн чего
Причина обращения: