표시기가 손상됨

 

모두,

나는 처음 16시간 정도 동안 잘 실행되는 표시기를 개발했으며 그 후에는 손상되어 차트 전체에 선을 그리기 시작합니다. 나는 또한 IndicatorCounted()의 값을 확인하고 있으며 손상된 라인을 얻을 때 그 값이 음수가 되지 않습니다. '유효한 이동/줄' 기록이 손실되므로 표시기 버퍼 를 다시 초기화하고 싶지 않습니다. 문제 해결에 대한 제안 사항이 있습니까?

첨부된 zip 파일에서 사용할 수 있는 정상 및 손상된 표시기의 이미지.

파일:
images.zip  61 kb
 
여기에는 독자가 없습니다 - 코드 없음 = 도움 없음
 
WHRoeder :
여기에는 독자가 없습니다 - 코드 없음 = 도움 없음

정말 감사합니다.
 

친애하는,

누군가 나에게 metaEditor 4를 다운로드할 수 있는 링크를 보낼 수 있습니까?

감사합니다.

 
tiger961 :

친애하는,

누군가 나에게 metaEditor 4를 다운로드할 수 있는 링크를 보낼 수 있습니까?

감사합니다.


Tiger 다른 스레드에 쌓이는 대신 새 스레드를 시작해야 합니다.

편집기는 모든 브로커에서 무료 MT4 터미널 다운로드와 함께 사용할 수 있습니다.

 

추가 정보 -

a) 표시기 손상은 Windows 64비트 플랫폼에서만 발생합니다.

b) 손상 전과 손상 후에 표시기 배열을 덤프했습니다. 주석이 포함된 동봉된 xls 파일에서도 동일하게 사용할 수 있습니다.

c) "차트의 최대 막대" 설정은 차트를 열 때만 적용됩니까? 막대 개수와 관련 지표 개수는 막대가 추가될 때마다 늘어납니다.

d) 코드 사용은 다음과 같습니다.

선언

<코드>

#속성 표시기_차트_창

#속성 표시기_버퍼 8

#property indicator_color1 빨간색

#속성 표시기_너비1 2

</코드>

표시기 초기화의 경우 -

<코드>

SetIndexBuffer(0, Down1);

SetIndexStyle(0, DRAW_LINE);

SetIndexEmptyValue(0, EMPTY_VALUE);

</코드>

라인 데이터 추가용

<코드>

무효 DrawMoveEx(더블& 시리즈[], int 시작, int 끝, 더블 시작 레벨, 더블 엔드 레벨) {

더블 a = (끝 레벨 - 시작 레벨) / (시작 - 끝);

더블 y;

인트 바;


for(int x = 0; x <= 시작 - 끝; x++) {

y = a * x;

바 = 시작 - x;

시리즈[바] = 시작 레벨 + y;

}

}

</코드>

 
AnkaSoftware :
a) 표시기 손상은 Windows 64비트 플랫폼에서만 발생합니다.
Vista/Win7에 int \program files*를 설치하지 마십시오.
 
WHRoeder :
Vista/Win7에 int \program files*를 설치하지 마십시오.
맞습니다, 설치는 C:/metatrader4/< 터미널 디렉토리 >에 있습니다. 나는 이 문제가 경로 문제 때문이 아니라 메모리 손상 때문이라고 생각합니다. 표시기는 처음 3-4시간 동안 정상적으로 실행되고 그 후 손상이 시작됩니다.
 

나는 그것 의 종류 의 아무것도 의심 됩니다 . . .

차트를 오른쪽으로 스크롤하여 새로운 기록 데이터가 차트에 추가될 때 비슷한 일이 발생한 것 같습니다.

 
RaptorUK :

나는 그것 의 종류 의 아무것도 의심 됩니다 . . .

차트를 오른쪽으로 스크롤하여 새로운 기록 데이터가 차트에 추가되었을 때 비슷한 일이 발생한 것 같습니다.

흠, "새 기록 데이터가 차트에 추가되었습니다", 어떻게? 표시기가 시작되고 방해받지 않은 상태로 유지됩니다. 1000바의 고정 룩백이 있습니다. 표시기는 기록 데이터를 로드하지 않습니다.

개발 팀의 누군가가 이것을 볼 수 있습니까?

 
AnkaSoftware :

흠, "새 기록 데이터가 차트에 추가되었습니다", 어떻게? 표시기가 시작되고 방해받지 않은 상태로 유지됩니다. 1000바의 고정 룩백이 있습니다. 표시기는 기록 데이터를 로드하지 않습니다.

개발 팀의 누군가가 이것을 볼 수 있습니까?

나는 이것에 대해 RaptorUK와 함께 합니다: 이것이 당신의 코드가 아니라 MT4의 버그이거나 64비트 Windows와 관련이 있을 가능성은 거의 없습니다. 나는 MT4의 성능 및 안정성 문제에 대한 보고서를 보았지만 이는 근거가 있는 것으로 판명되었습니다(예: https://www.mql5.com/en/forum/135355 ). 그러나 MT4 언어에 대한 보고서는 본 적이 없습니다. 정확하다고 밝혀진 버그.

"Move Normal" 스크린샷과 "Move Error" 스크린샷의 차이점을 지적하겠습니다. "Move Normal"에는 명백한 누락된 막대가 없습니다. 반면 "이동 오류"에는 차트 데이터가 누락된 것 같습니다. X축에 있는 대부분의 마커는 16분 간격이지만 두 번째와 세 번째 마커의 간격은 21분(06:08~06:29)입니다. 이것이 문제일 수도 있고 아닐 수도 있지만, 연속적인 일련의 막대가 있을 것이라고 가정하는 위치에 대한 코드를 찾기 시작할 것입니다. 예를 들어, 현재 오전 8시라면 (a) 오전 7시에 대한 막대가 60 막대 전이거나 심지어 (b) 07:00에 대한 막대가 전혀 존재한다고 가정하는 코드의 모든 항목이 있습니다.