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

 
joo :
아마도 코드에서 Sleep의 존재 자체(부재와 비교하여)가 전체 실행 시간에 어떻게든 영향을 미칠 수 있지만, 테스터에서 Sleep이 고려되지 않는다는 사실은 확실합니다.
글쎄, 나는 여기서 특별한 사람이 아니다... 부정적인 인수로 Sleep() 함수를 처리하는 데 30분의 지연과 17일의 테스트 손실 - 이것이 사실입니다.
 

코드는 터미널을 중단합니다.

   MqlRates s1[];

   int count= TerminalInfoInteger ( TERMINAL_MAXBARS );
   int s1_copied= CopyRates ( Symbol (), Period (), 0 ,count,s1);
   if (s1_copied<= 0 )
       Print ( "Ошибка копирования ценовых данных " , GetLastError ());
   else Print ( "Скопировано " , ArraySize (s1), " баров" );

   Comment ( ArrayMaximum (s1, 0 , WHOLE_ARRAY ));

   ArrayFree (s1);

이유는 무엇입니까?

 
Graff :

코드는 터미널을 중단합니다.

이유는 무엇입니까?

시작한다:
 int count= TerminalInfoInteger ( TERMINAL_MAXBARS );
 Print("count=",count);

터미널 설정 에 언림이 없나요?

 
uncleVic :
시작한다:

터미널 설정 에 언림이 없나요?


최대 막대 비용은 5000입니다. 이 값을 줄일 수 있습니까?
 
Graff :
최대 막대 비용은 5000입니다. 이 값을 줄일 수 있습니까?

제 생각에는 덜 불가능합니다(확실하지 않음).

글쎄요, 인쇄 (카운트)는 무엇을 생산합니까?

 
uncleVic :

제 생각에는 더 적은 것이 불가능합니다(확실하지 않음).

음, Print(count)는 무엇을 생산합니까?

2011.06.30 21:41:29 다중 기기3(EURUSD,M5) 5000바 복사됨
2011.06.30 21:41:29 다중 기기3(EURUSD,M5) 개수=5000

댓글에 -1

다른 기기에서 실행됨 - 충돌이 아니라 주석에서 -1이 가져옴

편집: 몇 초 후에 멈췄습니다. int OnInit()에서 코드를 시작합니다.

 
joo :
네, 하지만 테스터에서 작동합니다. 왜냐하면 Sleep은 무시되기 때문입니다.

테스터에서 Sleep 은 완전하고 상당히 정확하게 에뮬레이트됩니다.

이 예에서는 정수 값으로 작업할 때 산술 오버플로로 인해 17.5일의 대기 시간에 불과한 것으로 나타났습니다. 테스터는 그저 기다리고 있었다.

즉, 테스터나 MQL5 런타임 환경의 오류는 없으나 프로그래머의 명백한 실수가 있다.

 

Renat :

즉, 테스터나 MQL5 런타임의 오류는 없지만 프로그래머의 명백한 실수가 있다.

이것은 완전히 이해할 수 있습니다.

레나트 :

테스터에서 Sleep은 완전하고 상당히 정확하게 에뮬레이트됩니다.

이 예에서는 정수 값으로 작업할 때 산술 오버플로로 인해 17.5일의 대기 시간에 불과한 것으로 나타났습니다. 테스터는 그저 기다리고 있었다.

음, 그렇군요. 그리고 나는 Sleep이 단순히 무시되었다고 잘못 생각했습니다.

예를 들어 테스트 모드 의 Expert Advisor에서 Sleep(3개월)을 지정하면 테스터는 단순히 기록을 3개월 앞으로 되감는 것으로 나타났습니다. - 이것은 멋지다.

 
네, 되감습니다. 함수만 int 밀리초 카운터가 오버플로될 때까지 49일로 제한됩니다.

기다리는 동안 테스터는 이전에 주문한 모든 처리를 포함하여 거래 환경을 계속 완벽하게 에뮬레이트합니다. MT5의 테스터는 매우 상세합니다.
 
Graff :
2011.06.30 21:41:29 다중 기기3(EURUSD,M5) 5000바 복사됨
2011.06.30 21:41:29 다중 기기3(EURUSD,M5) 개수=5000

댓글에 -1

다른 기기에서 실행됨 - 충돌이 아니라 주석에서 -1이 가져옴

편집: 몇 초 후에 멈췄습니다. int OnInit()에서 코드를 시작합니다.

네. 우리는 코끼리를 알아차리지 못했습니다.

이 줄에서 내가 강한 의심을 가지고 있는 이유가 있습니다.

   Comment ( ArrayMaximum (s1, 0 , WHOLE_ARRAY ));

어레이최대

1차원 숫자 배열 에서 최대 요소를 찾습니다.

int Array최대 (
    더블    array[] , // 검색할 배열
    정수       시작=0                  // 검색을 시작하는 인덱스
    정수       count=WHOLE_ARRAY , // 체크된 개수
);


그리고 우리의 경우:

   MqlRates s1[];

컴파일러가 이것을 놓치면 안 된다고 생각합니다. 당신은 무엇을 가지고 있습니까? 경고도 하지 않습니까? 그렇지 않은 경우 서비스 데스크에 요청을 제출하십시오 . 확인?

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.