오류, 버그, 질문 - 페이지 1394

 
Ilya Malev :

여기 코드가 있습니다.

나는 지표를 잘 못하지만 이 선은 의심스럽다

 return ( CopyBuffer (hnd, buf, index, 1 , Arr)== 1 ?Arr[ 0 ]: EMPTY_VALUE );

반환 값

복사된 배열 요소 의 수 또는 오류의 경우 -1입니다.

1개의 요소가 복사되면 함수는 해당 값을 반환하고, 요소가 없거나 1보다 크면 함수는 EMPTY_VALUE를 반환합니다.

아마도 그게 더 낫지 않을까요?

 return ( CopyBuffer (hnd, buf, index, 1 , Arr) >= 1 ?Arr[ 0 ]: EMPTY_VALUE );
 
Ilya Malev :

여기 코드가 있습니다.

나는 라인을 수정했고 작동하는 것 같습니다))))

buffer2[i]=- MathRand ()% 5 * Point ();
 
Vladimir Pastushak :

나는 라인을 수정했고 작동하는 것 같습니다))))

결국 스스로 해결했습니다. 그런데 왜 로직을 바꿨는지 궁금합니다(MT4에서는 포인트를 곱하지 않고 스케일이 좋았습니다). 그리고 DRAW_NONE을 사용하여 그리기가 없는 버퍼가 차트 크기 에 영향을 미치지 않는 이유는 무엇입니까?

 
Vladimir Pastushak :

나는 지표를 잘 못하지만 이 선은 의심스럽다

1. 반환 값 복사된 배열 요소 의 수 , 오류가 발생한 경우 -1입니다.

2. 1개의 요소가 복사되면 함수는 해당 을 반환합니다.

진술 1과 2가 모순된다고 생각하지 않습니까?
 
Ilya Malev :
진술 1과 2가 모순된다고 생각하지 않습니까?

아니다 )))

1 1에서 극한까지 가능

2개 이상인 경우 1개의 요소가 복사된 경우에만 2개 EMPTY_VALUE가 반환됩니다.

도움말 말한다

반환 값

복사된 배열 요소 의 수 또는 오류의 경우 -1입니다. 어떤 조건에서 1개의 요소가 복사됩니까?

 
Ilya Malev :

결국 스스로 해결했습니다. 그런데 왜 로직을 바꿨는지 궁금합니다(MT4에서는 포인트를 곱하지 않고 스케일이 좋았습니다). 그리고 DRAW_NONE을 사용하여 그리기가 없는 버퍼가 차트 크기 에 영향을 미치지 않는 이유는 무엇입니까?

전체 표시기 버퍼를 거치지 않습니다. 녹음

 for ( int i=rates_total- MathMax ( 1 , prev_calculated); i>= 0 ; i--)

일반적으로 잘못되었습니다. rate_total, prev_calculated 및 표시기 오프셋 iStdDev 변수가 있습니다. 첫 번째 패스에서 빈 인덱스를 채워야 합니다.

표시기 오프셋

그런 다음 표시기 버퍼의 나머지 인덱스를 살펴봅니다(걸어가는 것은 값을 할당하는 것을 의미합니다).

 
Karputov Vladimir :

전체 표시기 버퍼를 거치지 않습니다. 녹음

일반적으로 잘못되었습니다. rate_total, prev_calculated 및 표시기 오프셋 iStdDev 변수가 있습니다. 첫 번째 패스에서 빈 인덱스를 채워야 합니다.

그런 다음 표시기 버퍼의 나머지 인덱스를 살펴봅니다(걸어가는 것은 값을 할당하는 것을 의미합니다).

원본에는 다음과 같이 모든 것을 0으로 채우는 기능이 있었습니다.

       for ( int i=( int ) SeriesInfoInteger ( Symbol (), Period (), SERIES_BARS_COUNT )- 1 ; i>= 0 ; i--){
         buffer1[i]= 0 ;
         buffer1[i]= 0 ;
      }

이 경우에는 중요하지 않습니다. 거기에 빈 값이 있으면 그래프의 시작 부분에 있고 맨 끝에 있는 창의 크기에 영향을 주지 않습니다. 여기 문제는 완전히 다릅니다. 여기 위의 동지가 이미 알아 냈습니다.

 
Ilya Malev :

결국 스스로 해결했습니다. 그런데 왜 로직을 바꿨는지 궁금합니다(MT4에서는 포인트를 곱하지 않고 스케일이 좋았습니다). 그리고 DRAW_NONE을 사용하여 그리기가 없는 버퍼가 차트 크기 에 영향을 미치지 않는 이유는 무엇입니까?

다음과 같이 시도하십시오.

 PlotIndexSetDouble (0, PLOT_EMPTY_VALUE , EMPTY_VALUE );
PLOT_EMPTY_VALUE >>>
 
Vladimir Pastushak :

아니다 )))

어떤 조건에서 1개의 요소가 복사됩니까?

예 )))

 int    CopyBuffer (
     int        indicator_handle,     // handle индикатора
     int        buffer_num,           // номер буфера индикатора
     int        start_pos,             // откуда начнем 
     int        count,                 // сколько копируем
     double     buffer[]               // массив, куда будут скопированы данные
    );
 
Ilya Malev :

예 )))

예, 귀하의 라인이 맞습니다.