MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1737

 
Artyom Trishkin # :

물론 프로그램은 터미널이 별도의 스레드에서 일부 데이터를 로그에 쓸 때까지 기다리지 않습니다.

고마워, 내 말은

 
for (i; i>0; i--) 문 "i--" 또는 "expression 3"(문서에 따라)이 실행된 후 중단된 후 알려주세요. 교과서에서 찾을 수 없습니다.

핸디캡 체크 후 Print(i);, 중단 전에 i-- 및 if (i==0), 즉 exit 명령이 있는 경우 "-1"이 때때로 충돌하는 이유를 이해할 수 없습니다. , 이미 연산자 내부에 있는 경우 i가 0에 도달했습니다. i는 코드 아래에서 더 많이 사용되기 때문에 Close[i]에서 범위를 벗어난 오류 배열을 제공합니다.

 
Ivan Butko for (i; i>0; i--) 문 "i--" 또는 "expression 3"(문서에 따라)이 실행된 후 중단된 후 알려주세요. 교과서에서 찾을 수 없습니다.

핸디캡 체크 후 Print(i);, 중단 전에 i-- 및 if (i==0), 즉 exit 명령이 있는 경우 "-1"이 때때로 충돌하는 이유를 이해할 수 없습니다. , 이미 연산자 내부에 있는 경우 i가 0에 도달했습니다. i는 코드 아래에서 더 많이 사용되기 때문에 Close[i]에서 범위를 벗어난 오류 배열을 제공합니다.

아무것도 이해하지 못했습니다. 스튜디오 코드
 
Ivan Butko for (i; i>0; i--) 문 "i--" 또는 "expression 3"(문서에 따라)이 실행된 후 중단된 후 알려주세요. 교과서에서 찾을 수 없습니다.

핸디캡 체크 후 Print(i);, 중단 전에 i-- 및 if (i==0), 즉 exit 명령이 있는 경우 "-1"이 때때로 충돌하는 이유를 이해할 수 없습니다. , 이미 연산자 내부에 있는 경우 i가 0에 도달했습니다. i는 코드 아래에서 더 많이 사용되기 때문에 Close[i]에서 범위를 벗어난 오류 배열을 제공합니다.

break 후, 루프를 빠져나와 루프 다음의 문장으로 가고, 계속된 후에 반복은 이 위치와 새로운 것의 시작 부분에서 끝납니다.

 
Valeriy Yastremskiy for  (i; i>0; i--)
{
i--;
if (i==0) break;
}

Print(i);
Print(Close[i]);

// 로그에 (-1) like so... 따라서 Close[-1] 이 없기 때문에 배열 범위를 벗어남 오류가 발생합니다.

즉, 헤더의 중단 (i; i>0; i--) 후에 세 번째 표현식 "i--"가 여전히 실행된다는 것을 올바르게 이해하고 있습니까?

Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Оператор цикла for - Операторы - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ivan Butko for  (i; i>0; i--)
{
i--;
if (i==0) break;
}

Print(i);
Print(Close[i]);

// 로그에 (-1) like so... 따라서 Close[-1] 이 없기 때문에 배열 범위를 벗어남 오류가 발생합니다.

즉, 헤더의 중단 (i; i>0; i--) 후에 세 번째 표현식 "i--"가 여전히 실행된다는 것을 올바르게 이해하고 있습니까?

올바르게 씁니다.

i= 10 ;
for (i; i> 0 ; i-- )
{
i--;
if (i== 0 ) break ;
}

Print (i);
Print (Close[i]);
당신은 제목뿐만 아니라 사이클의 본문에서도 제거합니다.
 
Konstantin Nikitin # :

올바르게 씁니다.

내가 코드에 무엇을 쓰고 있는지 묻지 마십시오. 이 연산자의 뉘앙스를 이해하고 싶을 뿐입니다) 본문에서 "i=0이기 때문에 여기를 떠날 시간입니다"라고 표시하고 연산자는 다음으로 제어를 전달해야 하지만 표현식을 다시 가져와 실행합니다. 운영자

 
Ivan Butko # :

내가 도대체 무엇을 쓰고 있는지 묻지 마십시오. 이 연산자의 뉘앙스를 이해하고 싶을 뿐입니다) 본문에 "i=0이기 때문에 여기를 떠날 시간입니다"라고 표시하고 연산자는 다음으로 제어를 전달해야 하지만 표현식을 다시 취하고 실행합니다. 운영자

예, 표시했지만 이 수표 전에 가져갔습니다. 이렇게 쓰다

i= 10 ;
for (i; i> 0 ; i--)
{
if (i== 0 ) break ;
i--;
}

Print (i);
Print (Close[i]);

다른 결과가 있을 것입니다

 
Konstantin Nikitin # :

예, 표시했지만 이 수표 전에 가져갔습니다. 이렇게 쓰다


아... 알았다. 이해했다.

신속한 답변에 감사드립니다.

 
Ivan Butko # :

아... 알았다. 이해했다.

신속한 답변에 감사드립니다.

귀하의 코드는 -1이 아닌 0을 출력합니다.

 void OnStart ()
  {
int i= 10 ;
for (i; i> 0 ; i--)
{
i--;
if (i== 0 ) break ;
}

Print (i);
  }
//+------------------------------------------------------------------+

아마도 -1이 다른 곳에서 인쇄되었을 것입니다. 아마도 모든 코드가 인쇄물에 있을 것입니다 ..

문제 해결을 시도하기 전에 문제를 파악해야 합니다. 문제가 있는지 확인하고 해당 위치를 현지화하고 나서야 해결합니다..