//+-------------------------------------------------------------------------------------+//| Поиск последнего элемента ZZBuf с непустым значением |//+-------------------------------------------------------------------------------------+int GetLastIndexNoEmptyValue( int index)
{
while (ZZBuf[index] == EMPTY_VALUE && index < Bars ) // Поиск по графику справа налево
index++; // Пока не будет найден экстремум или// ..пока не достигнем конца историиreturn (index); // Индекс бара с непустым значением..// ..зиг-зага
}
//+-------------------------------------------------------------------------------------+//| Поиск последнего элемента ZZBuf с непустым значением |//+-------------------------------------------------------------------------------------+int GetLastIndexNoEmptyValue( int index)
{
while (ZZBuf[index] == EMPTY_VALUE && index < Bars ) // Поиск по графику справа налево
index++; // Пока не будет найден экстремум или// ..пока не достигнем конца историиreturn (index); // Индекс бара с непустым значением..// ..зиг-зага
}
iCustom()을 통해 표시기 버퍼에 액세스합니다.
논리적으로. 그러나 이런 식으로 비어 있지 않은 값 을 찾을 때까지 검색이 수행됩니다. 그리고 예를 들어, I, 그리고 실제로 비어 있지 않은 마지막 값이 필요하지 않은 경우, 즉 마지막 극값이 아니라 또 다른.. 예를 들어, 여기 화면에서:
또는 이와 같이 더 간결합니다. 나는 코드의 속도와 아름다움에 집착한다, 주의를 기울이지 마라)
일반적으로 모든 것이 정상입니다. 단지 내가 약간 다르게 코드를 작성하는 데 익숙해져서 읽기가 더 쉽지만 여러분에게는 다릅니다. 귀하의 브래킷은 첫 번째 모든 사람이 전송되지 않습니다. 나는 그것을 Editor에 배치했고 모든 것이 다음과 같은 형식으로 자리를 잡았습니다.
double get_extrem( int n)
{
for ( int i= 1 ;;i++)
{
double ind= iCustom ( Symbol (), 0 , "indicator_name" , 0 ,i);
if (n> 1 )
{
if (ind!= 0 ) n--;
}
else
{
if (ind!= 0 ) return (ind);
}
}
}
일반적으로 모든 것이 정상입니다. 단지 내가 약간 다르게 코드를 작성하는 데 익숙해져서 읽기가 더 쉽지만 여러분에게는 다릅니다. 귀하의 브래킷은 첫 번째 모든 사람이 전송되지 않습니다. 나는 그것을 Editor에 배치했고 모든 것이 다음과 같은 형식으로 자리를 잡았습니다.
코드가 1000줄 이상 넘어가면 간결하게 쓰기 시작)
또한 MT4에서는 특히 테스트를 실행할 때 성능이 저하됩니다. 간결한 버전이 더 빠릅니다.
지그재그 표시기에서 값을 가져오는 방법을 알려주세요. 일반적으로 어떻게 구현됩니까? 저것들. 마지막 극값이 아니라 특정 극한값을 잡고 싶다면.
예를 들어 지금 이 지그재그를 내 Expert Advisor에 연결하고 싶습니다.
커스텀 칠면조에 접근하기 위해 보통 하는 것처럼 iCustom 기능을 사용해야 하는 것은 이해하지만, 어떻게 상단에 집착을 하느냐가 문제입니다...
버퍼는 원칙에 따라 NON-EMPTY( EMPTY_VALUE ) 값을 검색합니다.
iCustom()을 통해 표시기 버퍼에 액세스합니다.버퍼는 원칙에 따라 NON-EMPTY(EMPTY_VALUE) 값을 검색합니다.
iCustom()을 통해 표시기 버퍼에 액세스합니다.
논리적으로. 그러나 이런 식으로 비어 있지 않은 값 을 찾을 때까지 검색이 수행됩니다. 그리고 예를 들어, I, 그리고 실제로 비어 있지 않은 마지막 값이 필요하지 않은 경우, 즉 마지막 극값이 아니라 또 다른.. 예를 들어, 여기 화면에서:
논리적으로. 그러나 이런 식으로 비어 있지 않은 값 을 찾을 때까지 검색이 수행됩니다. 그리고 예를 들어, I, 그리고 실제로 비어 있지 않은 마지막 값이 필요하지 않은 경우, 즉 마지막 극값이 아니라 또 다른.. 예를 들어, 여기 화면에서:
루프에 극한 카운터를 입력하고 극한 값(행의 비어 있지 않은 값)으로 루프를 끊습니다.
이해했다. 덕분에. 이제 모든 것을 실천에 옮겨야 합니다. 본질은 이해했지만, 뇌가 끓어오르는 필터의 배수구에...
이해했다. 덕분에. 이제 모든 것을 실천에 옮겨야 합니다. 본질은 이해했지만, 뇌가 끓어오르는 필터의 배수구에...
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(n>1)
if(ind!=0) n--;
else
if(ind!=0) return(ind);
}
}
이와 같이. 함수에 n(피크 번호)을 지정하면 해당 값이 반환됩니다. 피크 막대 번호가 필요한 경우 함수 유형을 int로 변경하고 return(ind) 대신; return(i) 쓰기;
또한 코드, 특히 반복(교과서에서와 같이)에서 i를 사용하는 경우 이 함수에서 i를 다른 변수(예: k)로 변경합니다.
표시기의 기능 내에서 iCustom을 설정해야 합니다.
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(n>1)
if(ind!=0) n--;
else
if(ind!=0) return(ind);
}
}
이와 같이. 함수에 n(피크 번호)을 지정하면 해당 값이 반환됩니다. 피크 막대 번호가 필요한 경우 함수 유형을 int로 변경하고 return(ind) 대신; return(i) 쓰기;
또한 코드, 특히 반복(교과서에서와 같이)에서 i를 사용하는 경우 이 함수에서 i를 다른 변수(예: k)로 변경합니다.
표시기의 기능 내에서 iCustom을 설정해야 합니다.
Nikolai , 흥미롭습니다. 물론, 당신은 조건을 작성했습니다. 보고 생각하고...
사용자 지정 표시기 버퍼가 값 0을 반환하면 n-- 이고 사용자 지정 표시기 버퍼가 값 0 을 반환하면 ... 표시기 버퍼의 값을 반환합니다.
그러나 조건은 동일합니다. 그리고 0이 아닌 경우 ..
Nikolai , 흥미롭습니다. 물론, 당신은 조건을 작성했습니다. 보고 생각하고...
사용자 지정 표시기 버퍼가 값 0을 반환하면 n-- 이고 사용자 지정 표시기 버퍼가 값 0 을 반환하면 ... 표시기 버퍼의 값을 반환합니다.
그러나 조건은 동일합니다. 그리고 0이 아닌 경우 ..
코드를 정상적으로 삽입하려고 하는 동안 중괄호가 어딘가에 빠졌습니다.
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(n>1) {
if(ind!=0) n--;
}else{
if(ind!=0) return(ind);
}
}
}
n>1인 경우 {
버퍼가 비어 있지 않으면 n에서 1을 뺍니다.
}반대의 경우{
버퍼가 비어 있지 않은 경우 - 값을 반환
}
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(ind!=0) {
if(n>1) n--; else return(ind);
}
}
}
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(ind!=0) {
if(n>1) n--; else return(ind);
}
}
}
일반적으로 모든 것이 정상입니다. 단지 내가 약간 다르게 코드를 작성하는 데 익숙해져서 읽기가 더 쉽지만 여러분에게는 다릅니다. 귀하의 브래킷은 첫 번째 모든 사람이 전송되지 않습니다. 나는 그것을 Editor에 배치했고 모든 것이 다음과 같은 형식으로 자리를 잡았습니다.
일반적으로 모든 것이 정상입니다. 단지 내가 약간 다르게 코드를 작성하는 데 익숙해져서 읽기가 더 쉽지만 여러분에게는 다릅니다. 귀하의 브래킷은 첫 번째 모든 사람이 전송되지 않습니다. 나는 그것을 Editor에 배치했고 모든 것이 다음과 같은 형식으로 자리를 잡았습니다.
코드가 1000줄 이상 넘어가면 간결하게 쓰기 시작)
또한 MT4에서는 특히 테스트를 실행할 때 성능이 저하됩니다. 간결한 버전이 더 빠릅니다.