mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 142 1...135136137138139140141142143144145146147148149...247 새 코멘트 Edgar Akhmadeev 2019.10.14 22:24 #1411 최적화 매개변수의 반복 횟수를 줄이기 위해 비선형 척도를 생성하는 두 가지 방법을 사용합니다. 충분한 정확도로 시간 단위로 기간을 반복하려면 다음을 수행하십시오. enum eHours { _0, _4, _6, _8, _12, _16, _24, _32, _48, _64, _96, _128 }; input eHours TrendHours = _8; int eHours2Hours(eHours e) { switch (e) { case _0: return 0; case _4: return 4; case _6: return 6; case _8: return 8; case _12: return 12; case _16: return 16; case _24: return 24; case _32: return 32; case _48: return 48; case _64: return 64; case _96: return 96; case _128: return 128; default: return -1; } } 예를 들어 2자리(~1%)의 정확도로 SAR 단계를 열거하려면: // Приводит параметр оптимизации к нелинейному виду // 001-099 >> 0.0001-0.0099 // 101-199 >> 0.001-0.099 // 201-299 >> 0.10-0.99 // Внимание: коды 000, 100, 200 возвращают 0.0 double NonlinPar( int code) { int order = code / 100 ; int mod = code - order * 100 ; return mod * MathPow ( 10 , order) / 10000 ; } 0.0001에서 0.99로 최적화하려면 거의 10K 단계가 필요합니다. 최적화에서 코드 001-299를 사용할 때 300단계 미만이 필요합니다. fxsaber 2019.10.28 06:24 #1412 체크를 해도 0으로 나누는 방법. void OnStart () { const double Profit = 100 ; const double Lots = 1 ; double TickValue[]; ArrayResize (TickValue, 1 ); const double Points = TickValue[ 0 ] ? Profit / (Lots * TickValue[ 0 ] * _Point ) : 0 ; // zero divide } 오류는 분명합니다. 그러나 그러한 코드를 작성할 때 그러한 검사가 0으로 나누는 것을 피하기에 충분하지 않다는 것이 항상 분명한 것은 아닙니다. TheXpert 2019.10.28 08:59 #1413 삼항 연산자 를 사용하지 않는 이유. fxsaber 2019.10.28 09:19 #1414 TheXpert : 삼항 연산자 를 사용하지 않는 이유. 물론 비슷하다면 말이다. Alexey Viktorov 2019.10.28 09:22 #1415 값이 없으면 반드시 0이고, 따라서 이것이 bool 유형 이 아닌 변수인 경우 false가 되기를 바랄 필요는 없습니다. bool에 대한 명시적 캐스트조차도 도움이되지 않습니다. void OnStart () { const double Profit = 100 ; const double Lots = 1 ; double TickValue[]; ArrayResize (TickValue, 1 ); const double Points = TickValue[ 0 ] == 0? Profit / (Lots * TickValue[ 0 ] * _Point ) : 0 ; } 이것은 오류 없이 작동합니다. fxsaber 2019.10.28 09:25 #1416 거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼 mql5 언어의 특징, 미묘함 및 작업 방법 알렉세이 빅토 로프 , 2019.10.28 10:22 값이 없으면 반드시 0이고, 따라서 이것이 bool 유형 이 아닌 변수인 경우 false가 되기를 바랄 필요는 없습니다. bool에 대한 명시적 캐스트조차도 도움이되지 않습니다. void OnStart () { const double Profit = 100 ; const double Lots = 1 ; double TickValue[]; ArrayResize (TickValue, 1 ); const double Points = TickValue[ 0 ] = = 0? Profit / (Lots * TickValue[ 0 ] * _Point ) : 0 ; } 이것은 오류 없이 작동합니다. 강조 표시된 영역에 오류가 있습니다. Alexey Viktorov 2019.10.28 09:28 #1417 fxsaber : 강조 표시된 영역에 오류가 있습니다. 전용공간이 안보이네요. 실수는 어디에 있습니까? Artyom Trishkin 2019.10.28 09:30 #1418 fxsaber : 강조 표시된 영역에 오류가 있습니다. "=="라고 썼지만 "!="이어야 합니다. "매우 옅은 노란색"으로 강조 표시되어 있습니다. :) Alexey Viktorov 2019.10.28 09:34 #1419 Artyom Trishkin : "=="라고 썼지만 "!="이어야 합니다. "매우 옅은 노란색"으로 강조 표시되어 있습니다. :) 뭐, 역시 내가 저 원숭이 같은 걸 모두가 아는 건 아니잖아. "나이 들어서 눈이 약해졌어." 아마도 그렇습니다. 그러나 어떤 이유에서인지 이 옵션은 0으로 나누지 않고 작동했습니다. 그러나 일반적으로 제 메시지는 false에 대한 부울 값으로 모든 변수가 0인지 확인할 필요가 없다는 것입니다. fxsaber 2019.10.28 09:40 #1420 Alexey Viktorov : 아마도 예, 하지만 어떤 이유로 이 옵션은 0으로 나누지 않고 작동했습니다. TickValue가 null이 아니기 때문입니다. 1...135136137138139140141142143144145146147148149...247 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
최적화 매개변수의 반복 횟수를 줄이기 위해 비선형 척도를 생성하는 두 가지 방법을 사용합니다.
충분한 정확도로 시간 단위로 기간을 반복하려면 다음을 수행하십시오.
예를 들어 2자리(~1%)의 정확도로 SAR 단계를 열거하려면:
0.0001에서 0.99로 최적화하려면 거의 10K 단계가 필요합니다. 최적화에서 코드 001-299를 사용할 때 300단계 미만이 필요합니다.
오류는 분명합니다. 그러나 그러한 코드를 작성할 때 그러한 검사가 0으로 나누는 것을 피하기에 충분하지 않다는 것이 항상 분명한 것은 아닙니다.
삼항 연산자 를 사용하지 않는 이유.
물론 비슷하다면 말이다.
값이 없으면 반드시 0이고, 따라서 이것이 bool 유형 이 아닌 변수인 경우 false가 되기를 바랄 필요는 없습니다. bool에 대한 명시적 캐스트조차도 도움이되지 않습니다.
이것은 오류 없이 작동합니다.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
mql5 언어의 특징, 미묘함 및 작업 방법
알렉세이 빅토 로프 , 2019.10.28 10:22
값이 없으면 반드시 0이고, 따라서 이것이 bool 유형 이 아닌 변수인 경우 false가 되기를 바랄 필요는 없습니다. bool에 대한 명시적 캐스트조차도 도움이되지 않습니다.
이것은 오류 없이 작동합니다.
전용공간이 안보이네요. 실수는 어디에 있습니까?
"=="라고 썼지만 "!="이어야 합니다.
"매우 옅은 노란색"으로 강조 표시되어 있습니다. :)
"=="라고 썼지만 "!="이어야 합니다.
"매우 옅은 노란색"으로 강조 표시되어 있습니다. :)
뭐, 역시 내가 저 원숭이 같은 걸 모두가 아는 건 아니잖아. "나이 들어서 눈이 약해졌어."
아마도 그렇습니다. 그러나 어떤 이유에서인지 이 옵션은 0으로 나누지 않고 작동했습니다. 그러나 일반적으로 제 메시지는 false에 대한 부울 값으로 모든 변수가 0인지 확인할 필요가 없다는 것입니다.
아마도 예, 하지만 어떤 이유로 이 옵션은 0으로 나누지 않고 작동했습니다.
TickValue가 null이 아니기 때문입니다.