MT4가 멈추고 start()를 다시 호출하지 않습니다. - 페이지 4

 

나는 Raptor에 동의합니다. 누군가가 실제로 도움을 줄 수 있는 유일한 방법은 관련 코드를 게시하는 것입니다. 그렇지 않으면 어둠 속에서 사진을 찍는 것과 같습니다.

 

죄송합니다. 코드를 게시할 수 없습니다. 72페이지로 제가 출시할 제품 의 코드입니다.

그동안 WHRoeder가 첫 번째 답변에서 제안한 로그 호출을 구현했습니다.

Microsoft의 dbgView에서 볼 수 있는 디버그 정보를 작성합니다.

이 디버그 정보는 내 자신의 디버그 정보와 정확히 동일합니다.

로그 파일에서 보는 것을 신뢰할 수 있습니다.

이제 로그 파일은 start()가 종료되었지만 더 이상 트리거되지 않는다고 알려줍니다.

이것은 start() 내에서 호출되는 CreateHistory()에서 수행되는 작업의 양과 관련이 있는 것 같습니다.

init()에서 동일한 CreateHistory()를 호출하면 문제 없이 정확히 동일한 양의 작업이 수행됩니다.

이것을 보기 위해 MT4 개발자를 참여시킬 수 있습니까?

MT4 충돌(내 표시기의 EA 버전이 MT4 충돌)에 대한 추가 정보는 어디에서 찾을 수 있습니까?

Windows 이벤트 뷰어에서 아무것도 볼 수 없습니다.

 

내가 관련 코드를 게시한다고 말했을 때 나는 모든 것을 의미하는 것이 아니라 마지막으로 성공적으로 실행된 이후로 무엇을 변경하거나 추가했는지를 의미했습니다. 테스트 없이 72페이지의 코드를 작성하지 않았다고 가정합니다...

 

내가 변경한 것은: CreateHistory()를 init()에서 start()로 옮겼습니다.

현재 상황은 다음과 같습니다.

지연 없이 시작할 때 CreateHistory()를 호출하면 정상적으로 작동합니다.

지연 >= 1초로 시작할 때 CreateHistory()를 호출하면 MT4가 멈춥니다.

그러나 멈추는 것은 CreateHistory()가 아니라 start() 함수 입니다.

다음은 start()에 대한 코드입니다.

 int start()
  {     
   int TFInd;
   int k;  
   
   if (CheckDebug(DebugStart, 2 ))
      {
         DebugStr = "DebugStart: " + "begin ---------------------------------------: " ;
         PrintDebug(DebugFile, DebugStr);
      }

      
   for (IndexCount = 1 ; IndexCount <= MaxIndices; IndexCount++)
      {
         if (CheckDebug(DebugStart, 2 ))
            {
               DebugStr = "DebugStart: " + "in loop +++++++++++++: " + "IndexCount: " + IndexCount;
               PrintDebug(DebugFile, DebugStr);
            }              
      
         if (MyCurrencyIndices[IndexCount] == 0 )
             break ;

         CurrencyIndex = MyCurrencyIndices[IndexCount];             

         CurrencyIndexStr = Prefix + CurrencyNames[CurrencyIndex];
                 
         if (!HistoryCreated[CurrencyIndex] && ( TimeLocal () >= IndiStartTime + 0 ))                                                   // yyy
            {                     
               FileSeek (FileHandle[CurrencyIndex, TimeFrameM15] , HeaderFilePointer[CurrencyIndex, TimeFrameM15] , SEEK_SET );
               FileSeek (FileHandle[CurrencyIndex, TimeFrameH1] , HeaderFilePointer[CurrencyIndex, TimeFrameH1] , SEEK_SET );
               FileSeek (FileHandle[CurrencyIndex, TimeFrameH4] , HeaderFilePointer[CurrencyIndex, TimeFrameH4] , SEEK_SET );
               FileSeek (FileHandle[CurrencyIndex, TimeFrameD1] , HeaderFilePointer[CurrencyIndex, TimeFrameD1] , SEEK_SET );

               CreateHistory();
               HistoryCreated[CurrencyIndex] = true ;    
            }                           
      }  

   if (CheckDebug(DebugStart, 2 ))
      {
         DebugStr = "DebugStart: " + "returning ..." ;
         PrintDebug(DebugFile, DebugStr);
      }
                          
   return ( 0 );
  }

다음은 2개의 로그 파일입니다.

위의 코드에 대한 TimeLocal() >= IndiStartTime + 0(정상 작동), 위의 코드에 대한 TimeLocal() >= IndiStartTime + 1(중단).

마지막 경우 CreateHistory()가 올바르게 수행되고 반환됩니다.

start() 내에서 한 번만 호출됩니다.

start()에서 다른 작업은 수행되지 않지만 그럼에도 불구하고 start()는 MT4에 의해 다시 호출되지 않으며 MT4가 중단되어 CPU를 소모합니다.

CreateHistory()는 내 코드의 80%를 트리거합니다.

게시할 수 없습니다.

0초 지연에 대한 로그 파일:

2013.12.04 12:34:10 테스트 축소: USDJPY M15 Debug Init() 시작:
2013.12.04 12:34:10 테스트 축소: USDJPY M15 디버그 초기화() 반환:
2013.12.04 12:34:10 테스트 축소: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:34:10 테스트 축소: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1 <----------- CreateHistory() is 즉시 전화
2013.12.04 12:34:10 테스트 축소: USDJPY M15 디버그 CreateHistoryTimeFrame(), 시작: CurrencyIndex: 1 TF: 1 ShiftsArray[1, TF]: 4996 TheShift: 0
2013.12.04 12:34:10 테스트 축소: USDJPY M15 디버그 CreateHistoryTimeFrame(), 최종 반환: CurrencyIndex: 1 TF: 1
2013.12.04 12:34:10 테스트 축소: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:34:10 테스트 축소: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:34:11 테스트 축소: USDJPY M15 DebugStart: 시작 ---------------------------------- ------: <------------ start()가 반복적으로 트리거됩니다.
2013.12.04 12:34:11 테스트 축소: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:34:11 테스트 축소: USDJPY M15 DebugStart: 루프에서 +++++++++++++: IndexCount: 2
2013.12.04 12:34:11 테스트 축소: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:34:11 테스트 축소: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:34:11 테스트 축소: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:34:11 테스트 축소: USDJPY M15 DebugStart: 루프에서 +++++++++++++: IndexCount: 2
2013.12.04 12:34:11 테스트 축소: USDJPY M15 DebugStart: 반환 ...

1초 지연에 대한 로그 파일:

2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 디버그 초기화() 시작:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 디버그 초기화() 반환:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 테스트 축소 0: USDJPY M15 DebugStart: 반환 ...
2013.12.04 12:32:18 테스트 축소 0: USDJPY M15 DebugStart: 시작 ---------------------------------- ------:
2013.12.04 12:32:18 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 1
2013.12.04 12:32:18 테스트 축소 0: USDJPY M15 디버그 CreateHistoryTimeFrame(), 시작: CurrencyIndex: 1 TF: 1 ShiftsArray[1, TF]: 4996 TheShift: 0 <------------- 1초 후 CreateHistory()가 호출됩니다.
2013.12.04 12:32:18 테스트 축소 0: USDJPY M15 디버그 CreateHistoryTimeFrame(), 최종 반환: CurrencyIndex: 1 TF: 1
2013.12.04 12:32:18 테스트 축소 0: USDJPY M15 DebugStart: 루프 내 +++++++++++++: IndexCount: 2
2013.12.04 12:32:18 테스트 축소 0: USDJPY M15 DebugStart: 반환 ... <---------- start()는 다시 트리거되지 않습니다.

 
숨바꼭질을 하는 기분입니다. 지금은 CreateHistory() 함수 가 라이브 .hst 파일에 반복적으로 쓰는 것이 매우 의심스럽습니다. 내 말이 맞아?
 

CreateHistory()는 .hst 파일에 쓰는 오프라인 차트를 생성합니다.

라이브 .hst 파일에는 쓰지 않습니다.

 
mt4forum :

CreateHistory()는 .hst 파일에 쓰는 오프라인 차트를 생성합니다.

라이브 .hst 파일에는 쓰지 않습니다.

이것이 사실인지 어떻게 확신합니까?
 
RaptorUK :
이것이 사실인지 어떻게 확신합니까?

   CurrencyIndexStr = "CI_EUR" ;  

   FileName = CurrencyIndexStr + ThePeriod + ".hst" ;
   FileHandle = FileOpenHistory(FileName, FILE_BIN | FILE_WRITE );  

CI_EUR이라는 MT4 상품이 없습니다.

 
mt4forum :

CI_EUR이라는 MT4 상품이 없습니다.

확인