MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1877 1...187018711872187318741875187618771878187918801881188218831884...1953 새 코멘트 Mihail Matkovskij 2022.01.22 09:16 #18761 Maksim Emeliashin 정적 배열 및 이 배열에서 문자열 검색과 같은 자전거가 필요합니다. MQL의 경우 기능이 올바르게 작동하지 않습니다. template < typename T> bool StringToEnum( const string i_str, T &o_val) { for ( int i = 0 ; i < 256 ; i++) { o_val = (T)i; if ( StringCompare ( EnumToString (o_val), i_str, false ) == 0 ) return ( true ); } o_val = WRONG_VALUE ; return ( false ); } https://www.mql5.com/ru/docs/strings/stringcompare 옵션 문자열1 【인】 첫 번째 줄. 문자열2 【인】 두 번째 줄. case_sensitive=참 【인】 대소문자를 구분하는 모드입니다. 값이 true이면 "A">"a"입니다. 값이 false 이면 "A"="a" 입니다. 매개변수의 기본값은 true입니다. enum에 두 개의 상수(예: ENUM1 및 enum1)가 있는 경우 i_str: " enum1 "을 사용하여 함수는 상수 ENUM1의 값을 반환할 수 있습니다. 그리고 왜 StringCompare 입니까? 다음과 같이 할 수 있다면: template < typename T> bool StringToEnum( const string i_str, T &o_val) { for ( int i = INT_MIN ; i <= INT_MAX && ! IsStopped (); i++) // перебор всех возможных значений int { o_val = (T)i; if (i_str == EnumToString (o_val)) return ( true ); } o_val = WRONG_VALUE ; return ( false ); } Vladimir Karputov 2022.01.22 09:22 #18762 Amon1953 로 포지션을 청산하는 이유를 이해하지 못합니다. 이것은 다음에 무엇을 할 것인지 결정하기 위해 필요합니다. MT5 단말기의 히스토리 창에서 거래, 주문 또는 포지션을 선택할 수 있습니다. DEAL_REASON이 DEAL_REASON_SL과 동일한 DEAL의 거래 내역을 확인해야 합니다. 추가됨: 모든 것을 단순화할 수 있습니다. OnTradeTransaction에서 거래 TRADE_TRANSACTION_DEAL_ADD를 포착하고 거래 내역을 참조하여 이 거래를 생성한 DEAL 을 확인하는 것으로 충분합니다. 그런 다음 동일한 제조법: ... DEAL_REASON은 DEAL_REASON_SL과 같습니다. Mihail Matkovskij 2022.01.22 09:24 #18763 Mihail Matkovskij # : MQL의 경우 기능이 올바르게 작동하지 않습니다. https://www.mql5.com/ru/docs/strings/stringcompare enum에 두 개의 상수(예: ENUM1 및 enum1)가 있는 경우 i_str: " enum1 "을 사용하여 함수는 상수 ENUM1의 값을 반환할 수 있습니다. 그리고 왜 StringCompare 입니까? 다음과 같이 할 수 있다면: 그리고 더 빠른 버전: template < typename T> bool StringToEnum( const string i_str, T &o_val, int i_min_enum, int i_max_enum) { for ( int i = i_min_enum; i <= i_max_enum && ! IsStopped (); i++) { o_val = (T)i; if (i_str == EnumToString (o_val)) return ( true ); } o_val = WRONG_VALUE ; return ( false ); } bool StringToEnum( const string i_str, T &o_val) { return StringToEnum(i_str, o_val, INT_MIN , INT_MAX ); } // медленный вариант Maksim Emeliashin 2022.01.22 11:41 #18764 Alexey Viktorov # : 그리고 이 모든 것이 왜 필요한가? ENUM_TIMEFRAMES의 숫자 값을 자신의 숫자 값으로 바꾸시겠습니까? 또는 무엇을? 글쎄, 지금은 지표와 EA 매개변수의 설정을 데이터베이스에 기록해야 합니다. 동시에 다음을 원합니다. 1. 사람이 읽을 수 있는 기록 2. 기계 판독 가능한 기록 3. 사용자 지정 열거형에 새 값을 추가하는 것에 대한 저항(반드시 끝은 아님). EnumToString 작성에는 문제가 없지만 개발자들은 다른 모든 유형과 달리 역기능을 수행하지 않았습니다. Maksim Emeliashin 2022.01.22 11:46 #18765 Mihail Matkovskij # : 그리고 더 빠른 버전: 나는 대소문자를 무시하는 비교에 동의합니다. 소문자를 사용하지 않는 내 자신의 열거형을 위해 더 일반화된 자전거를 작성했습니다. 그러나 ENUM_TIMEFRAMES에 대해 이 옵션을 실행하는 경우: bool StringToEnum( const string i_str, T &o_val) { return StringToEnum(i_str, o_val, INT_MIN , INT_MAX ); } // медленный вариант 예를 들어 PERIOD_MN1의 경우 그가 데리러 오는 동안 커피를 마실 수 있습니다. :) 12345678902003 2022.01.22 11:53 #18766 Valeriy Yastremskiy # : 각 막대의 직선에서 가격을 구하고 차이의 교차점의 표시가 바뀌는 곳에서 비교하거나 차이를 찾으십시오) 그런데 막대에 평등이 없을 수 있습니다. 이를 위해 어떤 기능이 사용됩니까? mqlrates? 그리고 ObjectGet을 통해 거기에서 개체의 속성을 지정해야 합니다. OBJPROP_PRICE를 사용하는 경우 현재 막대까지 가격을 가져오는 방법을 지정해야 합니다. Tretyakov Rostyslav 2022.01.22 13:47 #18767 12345678902003 # : 도와주세요. 저는 두 개의 Gann 선을 그리고 있으며 특정 지점에서 교차합니다. 이 선이 교차하는 지점의 좌표를 찾아야 합니다. Gann 라인의 두 번째 점의 가격을 결정할 수 있다면 KimIV 가 더 많은 도움을 줄 것입니다. Mihail Matkovskij 2022.01.22 13:53 #18768 Maksim Emeliashin # : 나는 대소문자를 무시하는 비교에 동의합니다. 소문자를 사용하지 않는 내 자신의 열거형을 위해 더 일반화된 자전거를 작성했습니다. 그러나 ENUM_TIMEFRAMES에 대해 이 옵션을 실행하는 경우: 예를 들어 PERIOD_MN1의 경우 그가 데리러 오는 동안 커피를 마실 수 있습니다. :) 글쎄, ENUM_TIMEFRAMES에서 최소값과 최대값이 알려져 있습니다. 따라서 명시적으로 지정할 수 있습니다. 나머지 열거형을 사용하면 대략적인 값 범위를 아는 것으로 충분합니다. 열거형 선언에 상수가 지정되지 않은 경우 값은 일반적으로 0부터 시작합니다. i_max_enum은 50, 100, 255와 같이 두 자리 또는 세 자리 숫자로 설정할 수 있습니다. Alexey Viktorov 2022.01.22 14:09 #18769 Maksim Emeliashin # : 글쎄, 지금은 지표와 EA 매개변수의 설정을 데이터베이스에 기록해야 합니다. 동시에 다음을 원합니다. 1. 사람이 읽을 수 있는 기록 2. 기계 판독 가능한 기록 3. 사용자 지정 열거형에 새 값을 추가하는 것에 대한 저항(반드시 끝은 아님). EnumToString 작성에는 문제가 없지만 개발자들은 다른 모든 유형과 달리 역기능을 수행하지 않았습니다. 열거형을 인쇄해 본 적이 있습니까? Print ( PERIOD_M5 ); 무엇을 인쇄할 것 같습니까? 하지만 프로그래밍 방식으로 열거형을 만들려면 ... 예, 그렇습니다. 흥미로울 것입니다. Yurij Kozhevnikov 2022.01.22 15:26 #18770 x572intraday # : 음, 입력 매개변수가 루프에서 정렬될 수 없는 이유는 무엇입니까? 왜 우리를 이렇게 벌하시는 겁니까? 이것은 물론 목발이지만 나는 그것을 사용합니다. 주어진 구분 기호를 통해 필요한 모든 데이터를 문자열 입력 변수에 입력한 다음 StringSplit을 사용하여 배열로 추월합니다. 1...187018711872187318741875187618771878187918801881188218831884...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
MQL의 경우 기능이 올바르게 작동하지 않습니다.
https://www.mql5.com/ru/docs/strings/stringcompare
옵션
문자열1
【인】 첫 번째 줄.
문자열2
【인】 두 번째 줄.
case_sensitive=참
【인】 대소문자를 구분하는 모드입니다. 값이 true이면 "A">"a"입니다. 값이 false 이면 "A"="a" 입니다. 매개변수의 기본값은 true입니다.
enum에 두 개의 상수(예: ENUM1 및 enum1)가 있는 경우 i_str: " enum1 "을 사용하여 함수는 상수 ENUM1의 값을 반환할 수 있습니다. 그리고 왜 StringCompare 입니까? 다음과 같이 할 수 있다면:
이것은 다음에 무엇을 할 것인지 결정하기 위해 필요합니다.
MT5 단말기의 히스토리 창에서 거래, 주문 또는 포지션을 선택할 수 있습니다.
DEAL_REASON이 DEAL_REASON_SL과 동일한 DEAL의 거래 내역을 확인해야 합니다.
추가됨: 모든 것을 단순화할 수 있습니다. OnTradeTransaction에서 거래 TRADE_TRANSACTION_DEAL_ADD를 포착하고 거래 내역을 참조하여 이 거래를 생성한 DEAL 을 확인하는 것으로 충분합니다. 그런 다음 동일한 제조법: ... DEAL_REASON은 DEAL_REASON_SL과 같습니다.
MQL의 경우 기능이 올바르게 작동하지 않습니다.
https://www.mql5.com/ru/docs/strings/stringcompare
enum에 두 개의 상수(예: ENUM1 및 enum1)가 있는 경우 i_str: " enum1 "을 사용하여 함수는 상수 ENUM1의 값을 반환할 수 있습니다. 그리고 왜 StringCompare 입니까? 다음과 같이 할 수 있다면:
그리고 더 빠른 버전:
그리고 이 모든 것이 왜 필요한가? ENUM_TIMEFRAMES의 숫자 값을 자신의 숫자 값으로 바꾸시겠습니까? 또는 무엇을?
글쎄, 지금은 지표와 EA 매개변수의 설정을 데이터베이스에 기록해야 합니다. 동시에 다음을 원합니다.
1. 사람이 읽을 수 있는 기록
2. 기계 판독 가능한 기록
3. 사용자 지정 열거형에 새 값을 추가하는 것에 대한 저항(반드시 끝은 아님).
EnumToString 작성에는 문제가 없지만 개발자들은 다른 모든 유형과 달리 역기능을 수행하지 않았습니다.
그리고 더 빠른 버전:
나는 대소문자를 무시하는 비교에 동의합니다. 소문자를 사용하지 않는 내 자신의 열거형을 위해 더 일반화된 자전거를 작성했습니다.
그러나 ENUM_TIMEFRAMES에 대해 이 옵션을 실행하는 경우:
예를 들어 PERIOD_MN1의 경우 그가 데리러 오는 동안 커피를 마실 수 있습니다. :)각 막대의 직선에서 가격을 구하고 차이의 교차점의 표시가 바뀌는 곳에서 비교하거나 차이를 찾으십시오) 그런데 막대에 평등이 없을 수 있습니다.
도와주세요. 저는 두 개의 Gann 선을 그리고 있으며 특정 지점에서 교차합니다. 이 선이 교차하는 지점의 좌표를 찾아야 합니다.
나는 대소문자를 무시하는 비교에 동의합니다. 소문자를 사용하지 않는 내 자신의 열거형을 위해 더 일반화된 자전거를 작성했습니다.
그러나 ENUM_TIMEFRAMES에 대해 이 옵션을 실행하는 경우:
예를 들어 PERIOD_MN1의 경우 그가 데리러 오는 동안 커피를 마실 수 있습니다. :)글쎄, ENUM_TIMEFRAMES에서 최소값과 최대값이 알려져 있습니다. 따라서 명시적으로 지정할 수 있습니다.
나머지 열거형을 사용하면 대략적인 값 범위를 아는 것으로 충분합니다. 열거형 선언에 상수가 지정되지 않은 경우 값은 일반적으로 0부터 시작합니다. i_max_enum은 50, 100, 255와 같이 두 자리 또는 세 자리 숫자로 설정할 수 있습니다.
글쎄, 지금은 지표와 EA 매개변수의 설정을 데이터베이스에 기록해야 합니다. 동시에 다음을 원합니다.
1. 사람이 읽을 수 있는 기록
2. 기계 판독 가능한 기록
3. 사용자 지정 열거형에 새 값을 추가하는 것에 대한 저항(반드시 끝은 아님).
EnumToString 작성에는 문제가 없지만 개발자들은 다른 모든 유형과 달리 역기능을 수행하지 않았습니다.
열거형을 인쇄해 본 적이 있습니까?
무엇을 인쇄할 것 같습니까?
하지만 프로그래밍 방식으로 열거형을 만들려면 ... 예, 그렇습니다. 흥미로울 것입니다.
음, 입력 매개변수가 루프에서 정렬될 수 없는 이유는 무엇입니까? 왜 우리를 이렇게 벌하시는 겁니까?