MQL4/MQL5でenumとitemの長さを取得する方法は?

 

MQL4/MQL5でenumとitemの長さを取得する方法は?

例えば、あるenumの定義があります。

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とitemの長さを取得する方法は?

フォーラムやコードベースを検索してみましたが、答えは見つかりませんでした。

:-(

"enumの長さ "とはどういう意味ですか?

おそらくenumはあなたが探しているものではないと思いますが、あなたの質問を理解するために使用例を示してもらえますか?

 
Carl Schreiber:

enumの長さ "とはどういう意味ですか?

おそらくenumはあなたが探しているものではないと思いますが、あなたの質問を理解するために使用例を示してもらえますか?

私は私の質問を更新しました。
 
int ArrayCopyRates(double& dest_array[], string symbol=NULL, int timeframe=0)
チャートRateInfo配列から、2次元配列にレートをコピーします(2次元目は6要素)。
0 - 時間
1 - オープン
2 - low,
3 - 高値。
4 - 終値。
5 - ボリューム。
注:通常、DLL関数に 大きなデータブロックを渡すために使用される検索配列です。
パラメータ
dest_array[] - 2次元の出力数値配列への参照。
symbol - シンボル名。デフォルトでは、現在のチャートシンボル名が使用されます。
timeframe - 時間軸、デフォルトでは、現在のチャートの時間軸が使用されます。これは、タイムフレーム列挙の値のいずれでもかまいません。
サンプル
double array1[][6];
ArrayCopyRates(array1, "EURUSD", PERIOD_H1);

Print("現在のバー ",TimeToStr(array1[0][0]), "Open", array1[0][1]).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配列から、2次元配列にレートをコピーします(2次元目は6要素)。
0 - 時間
1 - オープン
2 - low,
3 - 高値。
4 - 終値。
5 - ボリューム。
注:通常、DLL関数に大きなデータブロックを渡すために使用される検索配列です。
パラメータ
dest_array[] - 2次元の出力数値配列への参照。
symbol - シンボル名。デフォルトでは、現在のチャートシンボル名が使用されます。
timeframe - 時間軸、デフォルトでは、現在のチャートの時間軸が使用されます。これは、タイムフレーム列挙の値のいずれでもかまいません。
サンプル
double array1[][6];
ArrayCopyRates(array1, "EURUSD", PERIOD_H1);

Print("現在のバー ",TimeToStr(array1[0][0]), "Open", array1[0][1]).Print("Current bar ",TimeToStr(array1[0][0]), "Open", array1[0][1]);

MQL4から ,役に立つかもしれません。

ありがとう、Maryann。

しかし、それは私の質問を解決することはできません。

 
Xiangdong Guo:

ありがとう、Maryann。

しかし、それは私の疑問を解決することはできません。

enumの長さ "とはどういう意味ですか?
 
Xiangdong Guo:

MQL4/MQL5でenumとitemの長さを取得する方法は?

動的なenumを持っていますか?もしそうなら、それをどのように変更したかを示してください。そうでない場合、あなたのコードでlength_of_enum = 3を設定できない理由 - これは静的な変更不可の変数です。
 
Xiangdong Guo:

MQL4/MQL5でenumとitemの長さを取得する方法は?

例えば、あるenumの定義があります。

次に、それをループで使用したいと思います。

この要件をどのように実装しますか?

フォーラムやコードベースを検索してみましたが、答えは得られませんでした。

:-(

もしリストをループしたいのであれば、配列を使いましょう。

enumは#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:
長さは決して不明ではなく、この話題は設計が悪いから生じたものでしかない。
設計が悪いとは