MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 589 1...582583584585586587588589590591592593594595596...1953 새 코멘트 Ghabo 2018.07.30 20:26 #5881 Alexey Viktorov : 1. 교체가 아니라 확인이라고 했습니다. iFractals는 프랙탈이 없으면 0을 반환합니다. 꾸준하게 사용하지도 않고 자연스럽게 이런 사소한 일로 마르지 않은 기억도 막히지 않는다. 2. 이 기능은 끔찍하게 작성되었지만 여전히 제대로 작동합니다. 3. 마지막 값이 Comment에 표시됩니다. 로 변경 몇 번이나 인쇄되는지 확인하십시오. 많긴 하지만 결코 거짓이 아닙니다. 조건이 항상 충족되는 것처럼. 그러나 그것은 거짓이어야 합니다. Alexey Viktorov 2018.07.30 20:50 #5882 Ghabo : 많긴 하지만 결코 거짓이 아닙니다. 조건이 항상 충족되는 것처럼. 그러나 그것은 거짓이어야합니다. 화면에서 상황은 조건과 반대이지만 사실입니다. 첫 번째 프랙탈과 두 번째 프랙탈이 화면에 표시됩니다. 그러나 조건에 따라 함수는 첫 번째 것보다 낮은 것을 찾을 때까지 더 검색합니다. 그리고 네 번째 프랙탈은 첫 번째 프랙탈보다 낮습니다... 이것이 조건에 쓰여진 것입니다. 조건을 보완하면 if (f!= 0 ) { fr2= NormalizeDouble (f, d); if (fr2<fr1) return ( true ); else break ; } 그것은 또한 false를 인쇄합니다. Ghabo 2018.07.30 21:31 #5883 Alexey Viktorov : 첫 번째 프랙탈과 두 번째 프랙탈이 화면에 표시됩니다. 그러나 조건에 따라 함수는 첫 번째 것보다 낮은 것을 찾을 때까지 더 검색합니다. 그리고 네 번째 프랙탈은 첫 번째 프랙탈보다 낮습니다... 이것이 조건에 쓰여진 것입니다. 조건을 보완하면 그것은 또한 false를 인쇄합니다. 조건을 뒤집었다 if (fr2>fr1) return ( true ); else break ; false를 인쇄하지만 조건이 충족됩니다. Ghabo 2018.07.30 22:06 #5884 두 번째 루프는 항상 첫 번째 루프에서 찾은 프랙탈의 가격을 반환합니다. for (i=nf+ num_bar; i<k; i++) { fx= iFractals (sy,tf, MODE_UPPER ,i); if (fx!= EMPTY_VALUE ) { fr2= NormalizeDouble (fx, d); return ( NormalizeDouble (fr2, d)); //if(fr2>fr1) return(true); //else break; } } Artyom Trishkin 2018.07.30 22:43 #5885 Ghabo : 두 번째 루프는 항상 첫 번째 루프에서 찾은 프랙탈의 가격을 반환합니다. 논리에 문제가 있는 것 같아요. 간단한 단어로 검색 순서를 설명하십시오. 당신이 쓴 모든 것이 맞는지 생각해보세요. 그런 다음에만 서수로 찾은 프랙탈의 가격을 반환하는 검색 기능을 만드십시오. 당신이 그것을 만들고 그것은 일련 번호로 지정된 프랙탈의 정확한 가격을 반환할 것이므로 연속으로 다음 프랙탈의 가격을 찾는 논리를 만들기 시작하십시오(이미 그 순간의 가격을 반환하는 함수가 있을 것입니다 ). 그런 다음이 가격을 비교하는 것만 남아 있습니다. 그리고 당신은 모두 한 번에 힙 울타리에 있습니다. Ghabo 2018.07.30 22:48 #5886 작동 방식을 잘못 이해하고 있는 것은 아닐까요? 먼저 MA 위에 있는 첫 번째 프랙탈을 찾습니다. (화면 1번에 표시됨) int i,k= iBars (sy,tf),kf,num_bar; for (i=nf+ 2 ; i<k; i++) { f= iFractals (sy,tf, MODE_UPPER ,i); MA= iMA ( NULL , 0 , 35 , 0 , MODE_EMA , PRICE_CLOSE ,i); if (f!= EMPTY_VALUE ) { // kf++; if (f>MA) {num_bar=i; fr1= NormalizeDouble (f, d); break ;} } } 더 나아가 역사를 들여다보면 가장 먼저 마주하는 것은 프랙탈입니다(화면에서 2번으로 표시됨). 프랙탈 #2가 프랙탈 #1보다 크면 true를 반환합니다. for (i=nf+ num_bar; i<k; i++) { fx= iFractals (sy,tf, MODE_UPPER ,i); if (fx!= EMPTY_VALUE ) { fr2= NormalizeDouble (fx, d); if (fr2>fr1) return ( true ); else break ; } } 모든 것이 맞습니까? Ghabo 2018.07.30 23:39 #5887 Artyom Trishkin : 서수로 찾은 프랙탈의 가격을 반환합니다. 숫자가 아니라 프랙탈이 MA 위에 있다는 조건을 찾고 있습니다. 서수는 무엇이든 될 수 있습니다. 첫 번째 주기에서 이 프랙탈의 가격은 변수 "fr1"에 올바르게 기록됩니다. 내가 올바르게 이해한다면 문제는 두 번째 사이클에 있습니다. 프랙탈 번호 2의 가격을 찾지 못하는 이유는 명확하지 않습니다. Alexey Viktorov 2018.07.31 09:06 #5888 Ghabo : 숫자가 아니라 프랙탈이 MA 위에 있다는 조건을 찾고 있습니다. 서수는 무엇이든 될 수 있습니다. 첫 번째 주기에서 이 프랙탈의 가격은 변수 "fr1"에 올바르게 기록됩니다. 내가 올바르게 이해한다면 문제는 두 번째 사이클에 있습니다. 프랙탈 번호 2의 가격을 찾지 못하는 이유는 명확하지 않습니다. 모든 논리를 다시 말해야 합니다. 스스로 생각할 수 있는 것이 있습니까? 1. 첫 번째 주기에서 MA 위의 프랙탈을 찾습니다. num_bar 변수에 막대 번호를 씁니다(화면에서 막대 번호 11). 2. 두 번째 주기에서 조건을 만족하는 두 번째 프랙탈을 찾기 시작합니다. nf가 0이므로 bar num_bar... 즉, 11번 막대에서 검색을 시작합니다. 3. 프랙탈 발견. 값은 이전 값과 같습니다. 조건에서 then > then < 그러나 같지 않기 때문에 조건이 충족되지 않습니다. 그리고 ==를 넣으면 반대편에서만 같은 쓰레기가 됩니다. 분명히 다음 막대 num_bar+1 또는 +2에서 두 번째 프랙탈을 찾아야 합니다. [아카이브!] 어떤 전문가나 지표도 [ARCHIVE] 포럼을 어지럽히 지 포럼을 어지럽히 지 않도록 Ghabo 2018.08.02 00:09 #5889 Alexey Viktorov : 모든 논리를 다시 말해야 합니다. 스스로 생각할 수 있는 것이 있습니까? 1. 첫 번째 주기에서 MA 위의 프랙탈을 찾습니다. 막대 번호를 변수 num_bar에 씁니다(화면에서 막대 번호 11). 2. 두 번째 주기에서 조건을 만족하는 두 번째 프랙탈을 찾기 시작합니다. num_bar... 즉, 11번 막대에서 검색을 시작합니다. nf는 0이기 때문입니다. 3. 프랙탈 발견. 값은 이전 값과 같습니다. 조건에서 then > then < 하지만 같지 않기 때문에 조건이 충족되지 않습니다. 그리고 ==를 넣으면 반대편에서만 같은 쓰레기가 됩니다. 분명히 다음 막대 num_bar+1 또는 +2에서 두 번째 프랙탈을 찾아야 합니다. 일반적으로 처음 두 단락의 행동은 목소리를 냈습니다) "num_bar+1"에 감사드립니다. 최소값을 찾을 수 없습니다. 조건이 충족되지 않으면 화살표가 설정되고 화살표가 설정되지 않습니다. 조건은 가격과 MA의 교차점 사이에 MA를 교차한 캔들의 저점에서 iLowest 저가까지의 거리가 100보다 크거나 같으면 화살표를 넣습니다. if (limit> 60 )limit= 60 ; for ( int i=limit; i> 0 ; i--) { M11= iMA ( NULL , 0 ,period,shift_,method,price,i+ 1 ); if (open[i+ 1 ]>M11 && close[i+ 1 ]<M11){time_1=time[i+ 1 ];} indexS1= iBarShift ( NULL , PERIOD_CURRENT ,time_1, false ); if (open[i+ 1 ]<M11 && close[i+ 1 ]>M11){time_2=time[i+ 1 ];} indexS2= iBarShift ( NULL , PERIOD_CURRENT ,time_2, false ); // double val= 0 ; //--- расчет минимального значения цены на indexS1 последовательных барах //--- с индекса indexS2 по индекс indexS1 включительно на текущем графике int val_index= iLowest ( NULL , 0 , MODE_LOW ,indexS1,i+indexS2); if (val_index!=- 1 ) val= Low [val_index]; else PrintFormat ( "Ошибка вызова iLowest. Код ошибки=%d" , GetLastError ()); if (low[indexS1]-val>= 100 * Point ) { BufferPointDn1[i]=high[i]; } // } B에서 A까지 C의 최소값을 찾습니다. 점 B에서 A-C=100핍, 화살표를 넣어야 합니다. 왜 안 넣어? Alexey Viktorov 2018.08.02 09:44 #5890 Ghabo : 일반적으로 처음 두 단락의 행동은 목소리를 냈습니다) 두 번째 요점은 약간 잘못되었습니다. 당신의 추론에는 그들이 찾기 시작한 곳과 우리가 어떤 가치를 얻는지에 대한 정의가 없었습니다. 즉, 조금 더 멀리 봐야 한다는 생각을 하게 만드는 것입니다. 가보 : 최소값을 찾을 수 없습니다. 조건이 충족되지 않으면 화살표가 설정되고 화살표가 설정되지 않습니다. 조건은 가격과 MA의 교차점 사이에 MA를 교차한 캔들의 저점에서 iLowest 저가까지의 거리가 100보다 크거나 같으면 화살표를 넣습니다. B에서 A까지 C의 최소값을 찾습니다. 점 B에서 A-C=100핍, 화살표를 넣어야 합니다. 왜 안 넣어? 이 코드에서도 논리를 파악하기 어려운 것이 있습니다. 최소한 indexS1 및 indexS2변수 가 각 틱에서 재설정되는지 여부와 관계없이 선언된 위치와 방법을 알아야 합니다. MA가 갭을 넘으면 어떻게 됩니까? 그리고 한 가지 더 질문: 디버거를 사용하는 방법을 알고 있습니까? 1...582583584585586587588589590591592593594595596...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
1. 교체가 아니라 확인이라고 했습니다. iFractals는 프랙탈이 없으면 0을 반환합니다. 꾸준하게 사용하지도 않고 자연스럽게 이런 사소한 일로 마르지 않은 기억도 막히지 않는다.
2. 이 기능은 끔찍하게 작성되었지만 여전히 제대로 작동합니다.
3. 마지막 값이 Comment에 표시됩니다. 로 변경
몇 번이나 인쇄되는지 확인하십시오.많긴 하지만 결코 거짓이 아닙니다. 조건이 항상 충족되는 것처럼. 그러나 그것은 거짓이어야 합니다.
많긴 하지만 결코 거짓이 아닙니다. 조건이 항상 충족되는 것처럼. 그러나 그것은 거짓이어야합니다. 화면에서 상황은 조건과 반대이지만 사실입니다.
첫 번째 프랙탈과 두 번째 프랙탈이 화면에 표시됩니다. 그러나 조건에 따라 함수는 첫 번째 것보다 낮은 것을 찾을 때까지 더 검색합니다. 그리고 네 번째 프랙탈은 첫 번째 프랙탈보다 낮습니다... 이것이 조건에 쓰여진 것입니다.
조건을 보완하면
그것은 또한 false를 인쇄합니다.
첫 번째 프랙탈과 두 번째 프랙탈이 화면에 표시됩니다. 그러나 조건에 따라 함수는 첫 번째 것보다 낮은 것을 찾을 때까지 더 검색합니다. 그리고 네 번째 프랙탈은 첫 번째 프랙탈보다 낮습니다... 이것이 조건에 쓰여진 것입니다.
조건을 보완하면
그것은 또한 false를 인쇄합니다.
false를 인쇄하지만 조건이 충족됩니다.
두 번째 루프는 항상 첫 번째 루프에서 찾은 프랙탈의 가격을 반환합니다.
두 번째 루프는 항상 첫 번째 루프에서 찾은 프랙탈의 가격을 반환합니다.
논리에 문제가 있는 것 같아요.
간단한 단어로 검색 순서를 설명하십시오. 당신이 쓴 모든 것이 맞는지 생각해보세요. 그런 다음에만 서수로 찾은 프랙탈의 가격을 반환하는 검색 기능을 만드십시오. 당신이 그것을 만들고 그것은 일련 번호로 지정된 프랙탈의 정확한 가격을 반환할 것이므로 연속으로 다음 프랙탈의 가격을 찾는 논리를 만들기 시작하십시오(이미 그 순간의 가격을 반환하는 함수가 있을 것입니다 ). 그런 다음이 가격을 비교하는 것만 남아 있습니다.
그리고 당신은 모두 한 번에 힙 울타리에 있습니다.
작동 방식을 잘못 이해하고 있는 것은 아닐까요?
먼저 MA 위에 있는 첫 번째 프랙탈을 찾습니다. (화면 1번에 표시됨)
더 나아가 역사를 들여다보면 가장 먼저 마주하는 것은 프랙탈입니다(화면에서 2번으로 표시됨). 프랙탈 #2가 프랙탈 #1보다 크면 true를 반환합니다.
모든 것이 맞습니까?
서수로 찾은 프랙탈의 가격을 반환합니다.
숫자가 아니라 프랙탈이 MA 위에 있다는 조건을 찾고 있습니다. 서수는 무엇이든 될 수 있습니다. 첫 번째 주기에서 이 프랙탈의 가격은 변수 "fr1"에 올바르게 기록됩니다.
내가 올바르게 이해한다면 문제는 두 번째 사이클에 있습니다. 프랙탈 번호 2의 가격을 찾지 못하는 이유는 명확하지 않습니다.
숫자가 아니라 프랙탈이 MA 위에 있다는 조건을 찾고 있습니다. 서수는 무엇이든 될 수 있습니다. 첫 번째 주기에서 이 프랙탈의 가격은 변수 "fr1"에 올바르게 기록됩니다.
내가 올바르게 이해한다면 문제는 두 번째 사이클에 있습니다. 프랙탈 번호 2의 가격을 찾지 못하는 이유는 명확하지 않습니다.
모든 논리를 다시 말해야 합니다. 스스로 생각할 수 있는 것이 있습니까?
1. 첫 번째 주기에서 MA 위의 프랙탈을 찾습니다. num_bar 변수에 막대 번호를 씁니다(화면에서 막대 번호 11).
2. 두 번째 주기에서 조건을 만족하는 두 번째 프랙탈을 찾기 시작합니다. nf가 0이므로 bar num_bar... 즉, 11번 막대에서 검색을 시작합니다.
3. 프랙탈 발견. 값은 이전 값과 같습니다. 조건에서 then > then < 그러나 같지 않기 때문에 조건이 충족되지 않습니다. 그리고 ==를 넣으면 반대편에서만 같은 쓰레기가 됩니다.
분명히 다음 막대 num_bar+1 또는 +2에서 두 번째 프랙탈을 찾아야 합니다.
모든 논리를 다시 말해야 합니다. 스스로 생각할 수 있는 것이 있습니까?
1. 첫 번째 주기에서 MA 위의 프랙탈을 찾습니다. 막대 번호를 변수 num_bar에 씁니다(화면에서 막대 번호 11).
2. 두 번째 주기에서 조건을 만족하는 두 번째 프랙탈을 찾기 시작합니다. num_bar... 즉, 11번 막대에서 검색을 시작합니다. nf는 0이기 때문입니다.
3. 프랙탈 발견. 값은 이전 값과 같습니다. 조건에서 then > then < 하지만 같지 않기 때문에 조건이 충족되지 않습니다. 그리고 ==를 넣으면 반대편에서만 같은 쓰레기가 됩니다.
분명히 다음 막대 num_bar+1 또는 +2에서 두 번째 프랙탈을 찾아야 합니다.
일반적으로 처음 두 단락의 행동은 목소리를 냈습니다)
"num_bar+1"에 감사드립니다.
최소값을 찾을 수 없습니다.
조건이 충족되지 않으면 화살표가 설정되고 화살표가 설정되지 않습니다.
조건은 가격과 MA의 교차점 사이에 MA를 교차한 캔들의 저점에서 iLowest 저가까지의 거리가 100보다 크거나 같으면 화살표를 넣습니다.
B에서 A까지 C의 최소값을 찾습니다.
점 B에서 A-C=100핍, 화살표를 넣어야 합니다.
왜 안 넣어?
일반적으로 처음 두 단락의 행동은 목소리를 냈습니다)
두 번째 요점은 약간 잘못되었습니다. 당신의 추론에는 그들이 찾기 시작한 곳과 우리가 어떤 가치를 얻는지에 대한 정의가 없었습니다. 즉, 조금 더 멀리 봐야 한다는 생각을 하게 만드는 것입니다.
최소값을 찾을 수 없습니다.
조건이 충족되지 않으면 화살표가 설정되고 화살표가 설정되지 않습니다.
조건은 가격과 MA의 교차점 사이에 MA를 교차한 캔들의 저점에서 iLowest 저가까지의 거리가 100보다 크거나 같으면 화살표를 넣습니다.
B에서 A까지 C의 최소값을 찾습니다.
점 B에서 A-C=100핍, 화살표를 넣어야 합니다.
왜 안 넣어?
이 코드에서도 논리를 파악하기 어려운 것이 있습니다.
최소한 indexS1 및 indexS2변수 가 각 틱에서 재설정되는지 여부와 관계없이 선언된 위치와 방법을 알아야 합니다.
MA가 갭을 넘으면 어떻게 됩니까?
그리고 한 가지 더 질문: 디버거를 사용하는 방법을 알고 있습니까?