[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 313

 
그리고 여기에 다른 것이 있습니다. 배열의 차원 중 하나에서 4개의 셀 차원을 선언하면 Buffer_OHLC[4][]를 호출할 수 없습니다. 사실은 번호 매기기가 1이 아니라 0부터 시작한다는 것입니다. 따라서 호출할 수 있는 최대값은 Buffer_OHLC[ 3 ][]입니다.
 
drknn :


1. Candles 변수는 어디에도 사용되지 않습니다.

2. 문자열

잘못 작성되었습니다. 루프에 있습니다. 루프를 반복할 때마다 새 변수 Cls를 만듭니다. 예, 거기에는 필요하지 않습니다. 쓰기에 충분하다


1. 표시기 작업이 완료되지 않았다고 표시하는 것을 잊었습니다. 그러나 어떤 경우에도 이것은 이 특정 기능의 작동에 어떤 식으로든 영향을 미치지 않아야 합니다.

2. 처음에는 그랬습니다. 그러나 오류가 발생하기 시작했을 때 문제가 어떻게든 어레이에서 어레이로 데이터를 전송하는 데 있을 수 있다고 생각했습니다.

 
drknn :

그리고 라인을 시도

~로 교체되다


도움이되지 않았습니다. 오래된 오류입니다.
 
drknn :
그리고 여기에 다른 것이 있습니다. 배열의 차원 중 하나에서 4개의 셀 차원을 선언하면 Buffer_OHLC[4][]를 호출할 수 없습니다. 사실은 번호 매기기가 1이 아니라 0부터 시작한다는 것입니다. 따라서 호출할 수 있는 최대값은 Buffer_OHLC[ 3 ][]입니다.


0 셀은 비어 있을 수 있습니다. 비슷한 예가 교과서에 설명되어 있습니다. 글쎄, 일반적으로 배열의 크기를 변경하더라도 오류는 남아있었습니다.

PS 표시기는 다른 기기에서 데이터를 가져와 현재 기기에 적용해야 합니다. 아마도 이 문제를 해결할 때 내가 근본적으로 잘못된 일을 하고 있는 것일까요?

 
silhouette :


0 셀은 비어 있을 수 있습니다. 비슷한 예가 교과서에 설명되어 있습니다. 음, 일반적으로 배열의 크기를 변경해도 오류가 남아 있습니다.

PS 표시기는 다른 기기에서 데이터를 가져와 현재 기기에 적용해야 합니다. 아마도 이 문제를 해결할 때 내가 근본적으로 잘못된 일을 하고 있는 것일까요?

2차원 배열을 잘못 취급하고 있습니다.

 

1. 첫 번째 인덱스를 두 번째 자리로 교체

2. ArrayResize 사용

 
silhouette :


0 셀은 비어 있을 수 있습니다. 비슷한 예가 교과서에 설명되어 있습니다. 음, 일반적으로 배열의 크기를 변경해도 오류가 남아 있습니다.

PS 표시기는 다른 기기에서 데이터를 가져와 현재 기기에 적용해야 합니다. 아마도 이 문제를 해결할 때 내가 근본적으로 잘못된 일을 하고 있는 것일까요?


Buffer_OHLC[4][] 배열을 선언했습니다 . 그리고 그것은 존재하지 않는 배열 셀, 즉 Buffer_OHLC[4][i]를 참조합니다. 선언한 배열에는 그러한 셀이 없습니다. 최대값은 Buffer_OHLC[3][i]입니다.

명확히 하기 위해: 배열의 두 번째 차원에서 4개의 셀을 선언했습니다(무한한 수의 열이 있는 일부 테이블의 4개 행을 가정해 봅시다). 번호가 0부터 시작하므로 액세스할 수 있는 첫 번째 행은 Buffer_OHLC[0][], 두 번째는 Buffer_OHLC[1][], 세 번째는 Buffer_OHLC[2][], 네 번째는 Buffer_OHLC[3][ ]. 선언한 배열에 Buffer_OHLC[ 4 ][] 문자열 이 존재하지 않습니다!

 
거기, [3,i]는 i>0에 대해 존재하지 않습니다 :)
 

처음으로 다차원 배열을 다루기 때문에 브레이크를 밟지 마십시오. :)

drnn 감사합니다 ! 나는 당신의 말을 이해합니다.

tara :

1. 첫 번째 인덱스를 두 번째 자리로 교체

2. ArrayResize 사용

고맙습니다! 결과가 있습니다. 하지만 ArrayResize 함수 와 첫 번째 배열 차원의 크기에 대해서도 명확히 하고 싶습니다.

   int counted_bars= IndicatorCounted ();
   int limit= Bars -counted_bars- 1 ;
   if (limit> 1 ) 
      limit= Bars - 1 ;
   
   ArrayResize (Buffer_OHLC,limit- 1 );
   for ( int i=limit; i>= 0 ; i--)
    {
      Buffer_OHLC[i][ 0 ]= iOpen (Smb, Period (),i);
      Buffer_OHLC[i][ 1 ]= iHigh (Smb, Period (),i);
      Buffer_OHLC[i][ 2 ]= iLow   (Smb, Period (),i);
      Buffer_OHLC[i][ 3 ]= iClose (Smb, Period (),i);
      
       if (Line==true)
       {
        Buffer_ind[i]=Buffer_OHLC[i][ 3 ];
       }
    }
   return ( 0 );

limit-1 사용시 그래프가 있는데 에러 4051 "Invalid function parameter value" 팝업창이 뜹니다.

 
열린 주문이 막대의 어느 순간에 열리고 다음 막대가 다음 막대에서만 열릴 수 있도록 만드는 방법을 설명할 수 있습니까?