기고글 토론 "MQL5 for Newbies의 맞춤 인디케이터" - 페이지 2

 
serg7771959:

니콜라스!

Mass[ i ]= Mass[ i+1]+A; 여기서 A는 변수인데, 컴파일은 오류 없이 진행되지만 창에 합류하면 배열이 범위를 벗어났다는 메시지가 표시되는 이유를 알려주실 수 있나요?


마지막 입력이 이루어질 셀을 고려하여 루프를 만들어야 하기 때문입니다. 예를 들어 Mass[] 배열의 크기가 10이라면 0에서 9까지 루프(배열의 마지막 셀의 인덱스)를 만든 다음 i==9에서 인덱스 9+1이 있는 셀에 쓰려고 시도합니다. 배열에 셀 10이 없습니다. 따라서 배열 외부의 출력을 얻게 됩니다.
 
이런 튜토리얼이 더 필요해요!!!
 

니콜라이, 감사합니다. 훌륭한 튜토리얼입니다!
하지만 제 생각에 그 변수

const int begin

가 항상 0 값인 것 같아요. 계산에 중요한 의미가 있나요?

 
igorsds:

니콜라이, 감사합니다. 훌륭한 튜토리얼입니다!
하지만 제 생각에 그 변수

가 항상 0 값인 것 같아요. 계산에 중요한 의미가 있나요?

"시작" 값은 어떤 지표에 적용되는지에 따라 달라집니다. 예를 들어 RSI에 적용하는 경우"시작" 은 14가 됩니다.

 

처음 컴파일을 시도하는 경우 버퍼 오류가 발생할 수 있습니다. 따라서 버퍼의 양을 변경하세요:

#속성 표시기_버퍼 2

나중에 다시 1(하나)의 버퍼로 전환할 수 있습니다:

#속성 표시기_버퍼 1

 
파이보 지그재그와 어떻게 결합하나요?
 

이해가 되지 않습니다. 다음과 같이 가정합니다.

rates_total == MA_Period - 1

이고 이것이 함수의 첫 번째 호출이므로

prev_calculated == 0

이고 시작도 == 0

인 경우 첫 번째 if(rates_total < MA_Period - 1 + begin) 의 조건이 false로 평가됩니다.

로 평가되면

first = MA_Period - 1이 실행됩니다.

가 실행되지만 첫 번째 for 루프의 조건이 false로 평가되므로 계산이 없습니다.

첫 번째 if 조건은 다음과 같아야 한다고 생각합니다.

if( rates_total < MA_Period + begin )

내가 여기서 뭔가 놓치고 있는 건가요?

 

그리고 하나 더. 지표 prev_calculated 횟수를 이미 계산한 경우 막대에서 숫자 (prev_calculated - 1) 로 계산을 시작해야 하는 이유는 무엇인가요?

예를 들어 0, 1, 2, 3, 4 막대에 대해 지표를 5회 계산했습니다. 4 막대에서 다시 계산할 필요가 없습니다. 5 막대부터 계속해야 합니다.

 
LRDPRDX #:

그리고 하나 더. 표시기 prev_calculated 횟수를 이미 계산한 경우 숫자 (prev_calculated - 1) 가 있는 막대에서 계산을 시작해야 하는 이유는 무엇인가요?

예를 들어 0, 1, 2, 3, 4 막대에 대해 지표를 5회 계산했습니다. 4 막대에서 다시 계산할 필요가 없습니다. 5 막대부터 계속해야 합니다.

알겠습니다. 4번째 막대가 마지막 계산 이후 변경되었을 수 있으므로 여기서 제가 틀린 것 같습니다. 따라서 (prev_calculated - 1) 이 올바르게 보입니다.
 
오늘의 주문 사기. Bravi