MQL4/MQL5에서 열거형 및 항목의 길이를 얻는 방법은 무엇입니까? - 페이지 2

 
Alain Verleyen :
길이는 알 수 없으며 이 주제는 잘못된 디자인에서 비롯된 것입니다.
이 요구 사항은 AutoTester 프로젝트에서 제공됩니다.
많은 지표/EA에서 입력 매개변수 에는 사용자 지정 열거형이 포함되어 있으므로 열거형에서 어떤 항목(및 상대 값)을 파악해야 합니다.
따라서 "나쁜 디자인"이라고 말하지 마십시오. 이러쿵 저러쿵...
 
Xiangdong Guo :
이 요구 사항은 AutoTester 프로젝트에서 제공됩니다.
많은 지표/EA에서 입력 매개변수에는 사용자 지정 열거형이 포함되어 있으므로 열거형에서 어떤 항목(및 상대 값)을 파악해야 합니다.
따라서 "나쁜 디자인"이라고 말하지 마십시오. 이러쿵 저러쿵...
물론 나쁜 디자인입니다. 그러나 그것은 나에게 문제가되지 않습니다.
 
Marco vd Heijden :
"열거형 길이"는 무엇을 의미합니까?
 enum fruit
  {
   APPLE= 0 , //APPLE
   BANANA= 1 , //BANANA
   GRAPE= 2 , //GRAPE
   ORANGE= 3 , //ORANGE
   CARROT= 4 , //CARROT
  };
  
sinput fruit type; //PICK A FRUIT 

당근은 과일이 아닐지도... 난 아직도 Xiangdong Guo 가 '열거의 길이'를 의미하는지 이해하지 못한다.

각 옵션 문자열 이름의 문자 수는?

얼마나 많은 옵션이 가능합니까?

옵션의 수치는?

나쁜 디자인뿐만 아니라 그가 의미하는 바가 명확하지 않습니다.

 
Marco vd Heijden :
값의 수이므로 과일의 예에서는 5입니다.
 
Alain Verleyen :
값의 수이므로 과일의 예에서는 5입니다.

나는 그것이 정적이라는 데 동의합니다. 가변적일 수 없기 때문에 항상 알려진 고정 값으로 시작할 것입니다.

그러나 만약 Xiangdong Guo 자신이 직접 설계하거나 작성하지 않은 지표를 테스트하고 있으며 입력 매개변수를 자동으로 알거나 감지하기를 원합니다...

사용 가능한 옵션의 수를 아는 것이 어떻게 도움이 될지 확신이 서지 않고 사용 가능한 모든 옵션을 교차 테스트하고 단순히 실행할 테스트 수를 찾고 있습니까?

사용 가능한 옵션의 경계를 벗어나 변환을 시도하면 이러한 값을 해결하기 위해 가정된 옵션을 검색하여 생성할 수 없는 열거형 오류가 존재하지 않기 때문에 변환할 수 없습니다.

 
Marco vd Heijden :

MT4/MT5는 C++/C# 함수 를 사용하여 열거형에서 항목을 검색합니다. 그러나 MetaQuotes는 이러한 기능을 MQL4/MQL5로 이식하지 않습니다. 흠...흠...

 enum DURATION_INTERVALS   // Enumeration of named constants
   {
    month= 1 ,     // Interval of one month
    two_months,   // Two months
    quarter,     // Three months - quarter
    halfyear= 6 ,   // Half a year
    year= 12 ,     // Year - 12 months
   };

input DURATION_INTERVALS HistoryDuration = month;

 
Xiangdong Guo :

MT4/MT5는 C++/C# 함수를 사용하여 열거형에서 항목을 검색합니다. 그러나 MetaQuotes는 이러한 기능을 MQL4/MQL5로 이식하지 않습니다. 흠...흠...

어떤 기능 ? 문제가 무엇입니까? 열거형의 항목을 반복하고 싶은 이유는 무엇입니까?
 
Alain Verleyen :
어떤 기능? 문제가 무엇입니까? 열거형의 항목을 반복하고 싶은 이유는 무엇입니까?

누군가가 MQL로 불가능한 일을 하기를 원하거나 해야 하는 경우 그것이 반드시 "나쁜 디자인"을 의미하는 것은 아닙니다.

토픽 스타터로: 현재 버전의 MQL에서는 원하는 작업을 수행할 수 없습니다.

유일한 방법은 모든 항목을 배열에 복사하고 해당 배열을 사용하여 루프를 만드는 것입니다. 그러나 코드를 수정할 수 있는 경우에만 가능합니다.

 
Andrey Barinov :

누군가가 MQL로 불가능한 일을 하기를 원하거나 해야 하는 경우 그것이 반드시 "나쁜 디자인"을 의미하는 것은 아닙니다.

토픽 스타터로: 현재 버전의 MQL에서는 원하는 작업을 수행할 수 없습니다.

유일한 방법은 모든 항목을 배열에 복사하고 해당 배열을 사용하여 루프를 만드는 것입니다. 그러나 코드를 수정할 수 있는 경우에만 가능합니다.

배열 대신 열거형을 사용하는 것은 잘못된 디자인입니다. 그렇지 않습니까?

 
Alain Verleyen :

배열 대신 열거형을 사용하는 것은 잘못된 디자인입니다. 그렇지 않습니까?

아니요, 열거형 대신 배열을 사용하는 것은 잘못된 디자인입니다.

예: 문자열 값이 있다고 상상해 보십시오. 그리고 작업은 이 문자열이 같거나 열거 항목 이름(EnumToString()) 중 하나를 포함하는지 확인하는 것입니다.

어떻게 해결하시겠습니까?

사유: