이 포럼에 게시하는 "mql 코드"의 기능을 생성할 수 있습니까? - 페이지 3

 

Zero devide를 찾아서 수정하는 방법에 대한 이 게시물: https://www.mql5.com/en/forum/general

 

브로커가 숫자를 하나 더 추가했다면?

https://www.mql5.com/en/forum/179191

 

흔하지 않은 오류

안녕 여러분,

저는 EA를 코딩하고 있는데 흔하지 않은 오류에 직면했습니다. 따라서 MT4에서 발생하는 이 오류에 대해 도움을 요청하고 싶습니다. 이 오류는 모든 경험에서 이미 동일한 문제에 직면했을 수 있습니다.

전체 EA를 읽는 것은 비실용적일 수 있으며 소스 코드는 매우 큽니다.

컴파일이 성공하면 테스터에서 MT4 저널에 다음 오류가 표시됩니다.

시간: 2011.01.28 23:35:36

메시지: 2007.07.13 00:00 InterCandles EURUSDFXF,H4: 스택 오버플로.

스택 크기를 하늘로 올리는 것조차도

#속성 스택크기 167692160

내 생각에 16MB의 메모리를 할당하면 오류가 지속됩니다.

테스터에서 " 스택 오버플 로"라는 동일한 문제에 직면한 사람이 있습니까? 아니면 문제가 MT4 내부인지 EA(배열, 중첩 선언, 너무 큰 ex4 파일 등)에 있는지 지적할 수 있습니까?

도움의 손길에 감사드리며 시간을 내서 죄송합니다.

고맙습니다.

 

문제 해결

글쎄, 누군가가 대답하기 전에 나는 해결책을 찾았습니다.

함수 를 사용하기 전에 테스터가 라이브러리를 연결하는 EA를 로드한 직후 저널에 "stack overflow"라는 메시지가 표시됩니다.

첨부 파일에서 "power"라는 기능에 문제가 있습니다. 내 결론은 다음과 같습니다.

1) 확실히 이름에는 문제가 없습니다. EX4의 심볼 테이블에 MQL 함수 충돌이 없습니다. 다른 레이블이 테스트되었습니다.

2) 분명히 기능 제한에 도달하지 않았습니다. 문제가 되는 기능을 제거한 후 더 많은 기능을 추가하여 오류가 발생하지 않았습니다. MT4 컴파일러를 통해 EX4 파일의 링크를 해제할 뿐만 아니라 이 기능을 제거해야만 제대로 작동합니다.

3) 재귀는 많은 호출을 통해 실행되고 결과는 스택에 남습니다. 스택은 인수 '지수'가 기하급수적으로 증가함에 따라 선형적으로 점근적으로 증가합니다. 잠재적으로 스택이 한계에 도달하여 오버플로가 발생할 수 있습니다. "스택 오버플로" 오류는 이 함수의 실행과 무관하게 나타납니다.

따라서 MT4 컴파일러가 EA 실행 중 잠재적인 스택 오버플로를 방지하는 언어에서 허용되지 않는 [일부 클래스] 재귀를 감지하는 장치를 가질 수 있습니다.

파일: