검사가 근본적으로 잘못되었기 때문입니다. Bars가 1000을 반환하고 cb도 1000을 반환했다고 가정해 보겠습니다. 그런 다음 루프에서 첫 번째 반복에서 i 값은 1000을 얻습니다. 루프 본문의 첫 번째 조건에서:
배열에서 한 번에 두 개의 종료: 인덱스 1000과 인덱스 1001로 막대에 액세스. 결국 차트에 1000개의 막대가 있는 경우 첫 번째 막대의 인덱스는 0이고 마지막 막대는 999입니다.
더 나아가 사이클의 본체를 따라 역사상 훨씬 더 먼 바에 대한 호소가 있습니다.
초기 점검 시 이 모든 사항을 고려해야 합니다.
올바르게 확인하는 방법? MQL4 도움말에서 IndicatorCounted() 함수의 예를 살펴보십시오. 이제는 IndicatorCounted()를 Rates_total(Bars) 및 prev_calculated(IndicatorCounted()) 변수를 공유하는 것으로 바꾸는 것이 좋습니다.
고마워, 발견
int counted_bars= IndicatorCounted ();
if (counted_bars> 0 ) counted_bars--;
int GetRecalcIndex( int & total, constint ratesTotal, constint prevCalculated)
{
total = ratesTotal - 2 - barsig;
if (cb > 0 && cb < total)
total = MathMin (cb, total);
if (prevCalculated < ratesTotal - 1 )
{
InitializeBuffers(); // Это функция, которая должна заново инициализировать все индикаторные буфера, т. к. имеем дело с первой загрузкой индикатора или подкачкой историиreturn (total);
}
return ( MathMin (ratesTotal - prevCalculated, total));
}
다음과 같이 사용하십시오.
int total;
int limit = GetRecalcIndex(total, rates_total, prev_calculated);
for ( int i = limit; i >= 0 ; --i)
{
...
}
총 값은 표시기 설정 값을 기반으로 액세스할 수 있는 역사상 가장 깊은 막대의 인덱스입니다.
여전히 날아다닌다.
[i+ 1 ] 이(가) 있고 +2가 더 있는지 확인해야 합니다.
일반적으로 다음과 같이 해야 합니다.
검사가 근본적으로 잘못되었기 때문입니다. Bars가 1000을 반환하고 cb도 1000을 반환했다고 가정해 보겠습니다. 그런 다음 루프에서 첫 번째 반복에서 i 값은 1000을 얻습니다. 루프 본문의 첫 번째 조건에서:
배열에서 한 번에 두 개의 종료: 인덱스 1000과 인덱스 1001로 막대에 액세스. 결국 차트에 1000개의 막대가 있는 경우 첫 번째 막대의 인덱스는 0이고 마지막 막대는 999입니다.
더 나아가 사이클의 본체를 따라 역사상 훨씬 더 먼 바에 대한 호소가 있습니다.
초기 점검 시 이 모든 사항을 고려해야 합니다.
올바르게 확인하는 방법? MQL4 도움말에서 IndicatorCounted() 함수의 예를 살펴보십시오. 이제는 IndicatorCounted()를 Rates_total(Bars) 및 prev_calculated(IndicatorCounted()) 변수를 공유하는 것으로 바꾸는 것이 좋습니다.
고마워, 발견
무엇과 비교할 것인가? 예제에서 limit 로 시작
limit= Bars -counted_bars;
이 "cb"를 무엇과 비교해야 합니까?
고마워, 발견
무엇과 비교할 것인가? 예제에서 limit 로 시작
이 "cb"를 무엇과 비교해야 합니까?
지표 데이터가 표시되는 막대 수 를 제한해야 하는 경우 다음을 수행하는 것이 좋습니다.
다음과 같이 사용하십시오.
총 값은 표시기 설정 값을 기반으로 액세스할 수 있는 역사상 가장 깊은 막대의 인덱스입니다.[i+ 1 ] 이(가) 있고 +2가 더 있는지 확인해야 합니다.
일반적으로 다음과 같이 해야 합니다.
나는 이것을 정확히 이렇게 썼습니다. ... 배열이 'HiLo.mq4'(122,15)에서 범위를 벗어났습니다.
+2를 더 확인하려면 무엇을 확인해야 하나요?
지표 데이터가 표시되는 막대 수 를 제한해야 하는 경우 다음을 수행하는 것이 좋습니다.
다음과 같이 사용하십시오.
총 값은 표시기 설정 값을 기반으로 액세스할 수 있는 역사상 가장 깊은 막대의 인덱스입니다.컴파일러는 맹세합니다.
'InitializeBuffers' - 함수가 정의되지 않았습니다. HiLo.mq4 161 7
컴파일러는 맹세합니다.
'InitializeBuffers' - 함수가 정의되지 않았습니다. HiLo.mq4 161 7
나는 이것이 모든 표시기 버퍼를 초기화해야 하는 함수라고 댓글에 썼습니다. 이것은 사용자 정의 기능입니다. 나는 다음과 같이 가지고있다 :
당신은 다른 다른 버퍼에. 표시기 가 그래픽 개체와 함께 작동하는 경우 판독값의 초기 렌더링이 완료되어야 하므로 여기에서 모든 개체를 삭제해야 합니다.
나는 이것이 모든 표시기 버퍼를 초기화해야 하는 함수라고 댓글에 썼습니다. 이것은 사용자 정의 기능입니다. 나는 다음과 같이 가지고있다 :
당신은 다른 다른 버퍼에. 표시기 가 그래픽 개체와 함께 작동하는 경우 판독값의 초기 렌더링이 완료되어야 하므로 여기에서 모든 개체를 삭제해야 합니다.
감사합니다. 하지만 아무 것도 변경되지 않았습니다. 'HiLo.mq4'의 범위를 벗어난 배열(130,15)
. 뭐가 문제 야?
감사합니다. 하지만 아무것도 변경되지 않았습니다. 뭐가 문제 야?
물론 결과는 변하지 않습니다. 결국, 주요 원인(cb의 주기)을 제거하지 않았습니다. 이 주기는 잘못 구성되어 있습니다.
이를 제거하고 대신 루프를 제한해야 합니다. 두 곳 모두에서.
물론 결과는 변하지 않습니다. 결국, 당신은 주된 이유(cb의 주기)를 제거하지 않았습니다. 이 주기는 잘못 구성되어 있습니다.
이를 제거하고 대신 주기를 제한해야 합니다. 두 곳 모두에서.
그런 사이클이 3개 있는데 교체했는데 터미널이 멈춥니다.
나는 그것을 했고, 그것은 멈추지 않고, 충돌하지 않는다. 그러나 첫 번째 버퍼(fx2)에는 3개의 값이 있다: price, 0.0, 164874239.218492.
값이 Sell_1_B!=EMPTY_VALUE이고 Sell_1_B!=0이면 가격이 있다는 의미가 아닙니다.
신호를 얻는 방법?