표시기가 손상됨 - 페이지 3

 
AnkaSoftware :

JIC, 32비트 플랫폼에서는 문제가 발생하지 않습니다. 이전 게시물 중 하나에서 일부 코드를 제공했습니다.

정확히 동일한 데이터를 수신할 필요가 없는 두 개(또는 그 이상)의 개별 시스템이 있습니다. 예를 들어, 64비트 시스템은 예를 들어 물리적 노드가 프로세서 사용량 또는 대역폭의 극한에서 작동하기 때문에 때때로 트래픽 및/또는 연결이 손실되는 사용량이 많은 VPS 노드에 있을 수 있습니다. (다른 많은 가능한 설명, 그것은 단지 하나입니다.)

M1 막대에 간격이 있을 때 보라색 선이 무엇이든 그리기가 중단되는 이유를 이해할 때까지는 다른 모든 것을 우연의 일치로 취급합니다.

첫 문장으로 돌아가서 마치겠습니다. 64비트 Windows가 당신이 설명하는 것과 같은 문제를 일으킬 이유가 없습니다. 많은 사람들이 이 포럼에서 MT4가 플랫폼 x, y 및 z에서 제대로 작동하지 않는다는 보고서를 제출했지만 결국 문제가 코드에 있음이 밝혀졌습니다. 말 그대로 수백만 명이 사용하는 성숙한 소프트웨어에서 몇 년 만에 진정한 MQL4 버그를 처음 발견했거나 문제가 코드에 있습니다. 지금까지의 증거(예: 16시간 후에 또는 3-4시간 후에 문제가 발생한다는 별도의 보고)에서 문제가 적절하게 처리하지 못한 데이터의 간헐적인 변동으로 인해 발생했을 가능성이 압도적으로 높습니다.
 

AnkaSoftware :

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

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

선언

<코드>

#속성 표시기_차트_창



  1. Vista/Win7의 \Program Files*에 설치하지 마십시오.
  2.  void DrawMoveEx( double & serie[], int start, int end, double startlevel, double endlevel) {
    double a = (endlevel - startlevel) / (start - end);
    double y;
    int bar;
    for ( int x = 0 ; x <= start - end; x++) {
    y = a * x;
    bar = start - x;
    serie[bar] = startlevel + y;
    }
    }
    여기서 무엇을 하려는지 잘 모르겠습니다. 하나의 경우 많은 값(start..end)을 계산하지만 하나(serie[bar])만 저장하면 다음과 같이 코딩합니다.
     void DrawMoveEx( double & serie[], int start, int end, double startlevel, double endlevel) {
       double a = (endlevel - startlevel) / (start - end);
       for ( int x = start; x <= end; x++) serie[x] = a * x + startlevel;
    }

 
문제를 재현할 샘플 표시기가 동봉되어 있습니다. 64비트 Windows 플랫폼에서 M1 차트에 표시기를 부착하고 4시간 이상 실행합니다.
파일:
 
AnkaSoftware :
문제를 재현할 샘플 표시기가 동봉되어 있습니다. 64비트 Windows 플랫폼에서 M1 차트에 표시기를 부착하고 4시간 이상 실행합니다.
죄송합니다. 여기에 깨끗한 64비트 시스템을 할당하고 4시간 이상 기다릴 수 있는 인내심이 없습니다.

그러나 이 표시기가 실제로 문제를 재현한다면 흥미롭다는 데 동의해야 합니다. 내부 문제가 어디에 숨어 있는지 즉시 알 수 없습니다. (이전과 같이 MT4와 브로커 사이에 발생한 문제와 최근 블립과 같은 상관 관계를 확실히 배제했다고 가정합니다. CNS에 대한 믿음을 언급했지만 실제로 MT4가 저널에는 연결 문제에 대한 언급이 없으며, 이로 인해 막대 기록이 다시 채워질 수 있습니다.)

MT4 문제의 경로를 추적하려는 경우 표시기 배열을 참조로 전달하는 것과 관련이 있을 가능성이 가장 큽니다. MQL4의 배열은 항상 정적이라는 이상한 속성을 가지고 있으며 Win64에서만 문제를 유발하는 참조로 특수 표시기 버퍼 배열을 전달하는 데 이상한 잠재적인 문제가 있을 수 있다고 생각합니다. 운영 체제가 이와 같은 맥락에서 차이를 만들어야 하는 이유는 완전한 미스터리로 남아 있습니다.

DrawMoveEx()를 변경하여 표시기 배열에 대한 참조를 더 이상 사용하지 않도록 하고 대신 DrawMoveEx_Down1(), DrawMoveEx_Up1() 등과 같이 단순히 버퍼를 전역 변수로 지정하는 별도의 함수가 있습니다. 그것이 차이를 만든다면 축하합니다. 거의 확실하게 자신이 MT4 버그를 발견한 것입니다. 아마도 오늘 두 번째 것입니다 .
 
AnkaSoftware :
문제를 재현할 샘플 표시기가 동봉되어 있습니다. 64비트 Windows 플랫폼에서 M1 차트에 표시기를 부착하고 4시간 이상 실행합니다.
Windows 7 Ultimate 64비트에서 5시간 이상 실행했는데 문제가 없습니다.
 
RaptorUK :
Windows 7 Ultimate 64비트에서 5시간 이상 실행했는데 문제가 없습니다.

JIC a) 참조를 전달하는 코드를 수정 하여 제안한 대로 문제가 해결되지 않습니다. 수정된 코드가 동봉되어 있습니다.

b) 귀하가 언급한 누락된 막대는 아마도 거래 조건이 없기 때문에 중개인이 막대를 보내지 않았기 때문일 수 있습니다. IMHO, 연결이 끊긴 경우 연결이 복원되면 누락된 막대를 사용할 수 있습니다. 내 샘플 코드를 보면 연속된 막대에 대한 종속성이 없습니다.

랩터, 테스트해주셔서 감사합니다. 오류를 보려면 확대해야 할 수도 있습니다. Windows Server 2008 R2 Enterprise에서 문제를 재현할 수 있습니다. 따라서 O/S 문제일 수 있습니다. 특정 플랫폼에 대한 MT4 권장 패치 목록을 어디서 얻을 수 있는지에 대한 아이디어.

.

파일:
 
AnkaSoftware :

특정 플랫폼에 대한 MT4 권장 패치 목록을 어디서 얻을 수 있는지에 대한 아이디어.

그런 것은 존재하지 않습니다. 모든 Windows 버전에서 실행되는 MT4 버전은 하나만 있으며 둘 이상이 필요한 특별한 이유는 없습니다. OS별 버전이나 패치는 없습니다.
 
AnkaSoftware :
문제를 재현할 샘플 표시기가 동봉되어 있습니다. 64비트 Windows 플랫폼에서 M1 차트에 표시기를 부착하고 4시간 이상 실행합니다.
내가 말할 수있는 한 여전히 정상 실행 중입니다. . . 어떻게 오류를 재현합니까?
 
RaptorUK :
내가 말할 수있는 한 여전히 정상 실행 중입니다. . . 어떻게 오류를 재현합니까?
당신은 아무것도 할 필요가 없습니다. 차트를 확대하는 것 외에 오류가 발생했는지 확인하십시오.
 
AnkaSoftware :
당신은 아무것도 할 필요가 없습니다. 차트를 확대하는 것 외에 오류가 발생했는지 확인하십시오.

차트 막대에서 연결이 끊긴 것처럼 보이는 선을 찾고 있다면(첫 번째 게시물에 따라) 문제가 발생하지 않습니다.