Mass[ i ]= Mass[ i+1]+A; 여기서 A는 변수인데, 컴파일은 오류 없이 진행되지만 창에 합류하면 배열이 범위를 벗어났다는 메시지가 표시되는 이유를 알려주실 수 있나요?
마지막 입력이 이루어질 셀을 고려하여 루프를 만들어야 하기 때문입니다. 예를 들어 Mass[] 배열의 크기가 10이라면 0에서 9까지 루프(배열의 마지막 셀의 인덱스)를 만든 다음 i==9에서 인덱스 9+1이 있는 셀에 쓰려고 시도합니다. 배열에 셀 10이 없습니다. 따라서 배열 외부의 출력을 얻게 됩니다.
니콜라스!
Mass[ i ]= Mass[ i+1]+A; 여기서 A는 변수인데, 컴파일은 오류 없이 진행되지만 창에 합류하면 배열이 범위를 벗어났다는 메시지가 표시되는 이유를 알려주실 수 있나요?
니콜라이, 감사합니다. 훌륭한 튜토리얼입니다!
하지만 제 생각에 그 변수
가 항상 0 값인 것 같아요. 계산에 중요한 의미가 있나요?
니콜라이, 감사합니다. 훌륭한 튜토리얼입니다!
하지만 제 생각에 그 변수
가 항상 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 막대부터 계속해야 합니다.
그리고 하나 더. 표시기 prev_calculated 횟수를 이미 계산한 경우 숫자 (prev_calculated - 1) 가 있는 막대에서 계산을 시작해야 하는 이유는 무엇인가요?
예를 들어 0, 1, 2, 3, 4 막대에 대해 지표를 5회 계산했습니다. 4 막대에서 다시 계산할 필요가 없습니다. 5 막대부터 계속해야 합니다.