MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 444

 
mila.com :

어드바이저는 가능성 자체를 확인하기 위해 수행했으며 올바르게 열리며 표시기에서는 "화살표 v.3" 표시기의 가장 가까운 두 버퍼 값을 전혀 볼 수 없습니다

따라서 표시기는 루프 에서 배열 외부로 날아갑니다. 한계를 살펴보고 중첩 루프에서 il의 값은 얼마입니까? limit == Rates_total-2일 때 인덱스 il은 어디를 참조합니까?

 
mila.com :

그것을 보는 방법?

귀하의 코드를 참조하십시오

 
Artyom Trishkin :

한계를 살펴보고 중첩 루프에서 il의 값은 얼마입니까?

첫 번째 및 두 번째 화살표의 막대 번호를 차례로 인쇄합니다.

   for ( int i=limit; i>= 0 ; i--) 
     {
     for ( int il=i+ 1 ;il<=i+ 300 ;il++)
        {
         if ( NormalizeDouble ( iCustom ( NULL , 0 , "Arrow v.3" , 0 ,il), Digits )!= EMPTY_VALUE
            )
           {
            num_buy=il;
             Print (il);
           // break;
           }
        }
//
       if (num_buy== 60 )
        {
         BufferUP[i+ 1 ]=low[i+ 1 ]-distance*MyPoint;
         
        }
    }
 

사흘째 그를 바라보는 나는 무엇이 잘못되었는지 이해하지 못한다)

말하다
 
mila.com :

첫 번째 및 두 번째 화살표의 막대 번호를 차례로 인쇄합니다.

그리고 이 이상한 주기는 무엇입니까?

왜 이야기의 시작 부분에서 끝까지 이동하고 첫 번째 루프가 반복될 때마다 중첩된 루프에서 300개의 막대로 계속 돌아가나요?

여기에서 iCustom()은 아마도 당신을 저장하는데, 이는 과거 데이터 외부의 값을 생성하지 않습니다.

글쎄, 당신 자신을 찾으십시오. 막대가 1000개에 불과하다고 가정해 보겠습니다. 이 경우 rate_total은 1000입니다. 제한, 1000-2=998입니다. 글쎄, 당신은 사이클에서 제외 된 역사의 첫 번째 막대를 얻습니다. 하나님은 그를 축복.

먼저 막대 번호 998(rates_total-2 = 1000-2 = 998)에 인덱스를 배치합니다.

그리고는 무엇을 합니까? 그런 다음 998+1=999와 같은 i 값에서 시작하는 중첩 루프를 만듭니다. 이것은 히스토리의 맨 처음 막대입니다. 왼쪽에는 아무 것도 없습니다. 비어 있습니다. 그리고 999에서 999+300까지 반복합니다. 데이터가 없습니다. 범위를 벗어난 배열입니다.

즉, 이 상황에서의 한계는 맨 처음의 중첩 루프가 막대 999에 도달하도록 해야 합니다. 이들은 rate_total-2-300입니다. 그런 다음 i + 1에서 중첩 루프를 시작하기 때문에 배열의 오버플로가 없습니다. i = 1000-2-300 = 698. 중첩 루프에서 li = i + 1 = 698 + 1 = 699, 그리고 최대 li =i+300 = 698+300=998. 다시 말하지만, 가장 첫 번째 막대는 계산에서 제외됩니다. 글쎄, 배열에서 벗어날 방법이 없습니다.

분명히 당신은 당신이하는 일을 이해하지 못합니다.

이것은 일반적으로 매우 이상한 사이클에 의해 입증됩니다.

거기에는 중첩 루프가 필요하지 않습니다. 특정 수의 사용자 지정 표시기 버퍼 값을 찾고 있다면 0에서 특정 값까지 반복합니다. 그러나 Rates_total을 넘지 않습니다.

 
Artyom Trishkin :

그리고 이 이상한 주기는 무엇입니까?

왜 이야기의 시작 부분에서 끝까지 이동하고 첫 번째 루프가 반복될 때마다 중첩된 루프에서 300개의 막대로 계속 돌아가나요?

여기에서 iCustom()은 아마도 당신을 저장하는데, 이는 과거 데이터 외부의 값을 생성하지 않습니다.

글쎄, 당신 자신을 찾으십시오. 막대가 1000개에 불과하다고 가정해 보겠습니다. 이 경우 rate_total은 1000입니다. 제한, 1000-2=998입니다. 글쎄, 당신은 사이클에서 제외 된 역사의 첫 번째 막대를 얻습니다. 하나님은 그를 축복.

먼저 막대 번호 998(rates_total-2 = 1000-2 = 998)에 인덱스를 배치합니다.

그리고는 무엇을 합니까? 그런 다음 998+1=999와 같은 i 값에서 시작하는 중첩 루프를 만듭니다. 이것은 히스토리의 맨 처음 막대입니다. 왼쪽에는 아무 것도 없습니다. 비어 있습니다. 그리고 999에서 999+300까지 반복합니다. 데이터가 없습니다. 범위를 벗어난 배열입니다.

즉, 이 상황에서의 한계는 맨 처음의 중첩 루프가 막대 999에 도달하도록 해야 합니다. 이들은 rate_total-2-300입니다. 그런 다음 i + 1에서 중첩 루프를 시작하기 때문에 배열의 오버플로가 없습니다. i = 1000-2-300 = 698. 중첩 루프에서 li = i + 1 = 698 + 1 = 699, 그리고 최대 li =i+300 = 698+300=998. 다시 말하지만, 가장 첫 번째 막대는 계산에서 제외됩니다. 글쎄요, 배열에서 벗어날 방법은 없습니다.

분명히 당신은 당신이하는 일을 이해하지 못합니다.

이것은 일반적으로 매우 이상한 사이클에 의해 입증됩니다.


감사합니다.

 
Artyom Trishkin :

이것은 일반적으로 매우 이상한 사이클에 의해 입증됩니다.

거기에는 중첩 루프가 필요하지 않습니다. 특정 수의 사용자 지정 표시기 버퍼 값을 찾고 있다면 0에서 특정 값까지 반복합니다. 그러나 Rates_total을 넘지 않습니다.

왜 제로에서?

세 번째 또는 "N"바에 호출 된 표시기의 화살표가 있으면 점을 넣어야합니다. 역사를 통틀어

올바른 주기는 무엇입니까?

 
mila.com :

왜 제로에서?

세 번째 또는 "N"바에 호출 된 표시기의 화살표가 있으면 점을 넣어야합니다. 역사를 통틀어

올바른 주기는 무엇입니까?

어디에서 해야 합니까? 지표에서? 고문에서?

 
Artyom Trishkin :

어디에서 해야 합니까? 지표에서? 고문에서?

표시기에서

 
mila.com :

표시기에서

글쎄, 첫 번째 사이클의 인덱스로 즉시 iCustom()을 읽으십시오.

또 다른 질문은 현재 막대에서 왼쪽으로 데이터가 필요하다는 것입니다. 그것이 내가 말하는 이유입니다 - 0에서 필요한 것까지 읽으십시오. 그러나 rate_total-1 이상은 아닙니다.

동시에 limit>1인 경우에만 읽기

나머지 시간에는 새 데이터가 없으며 필요한 막대의 인덱스는 변경되지 않습니다.