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

 
fxsaber :
항상 한 MQL 프로그램에서 파일(RAM 드라이브)에 무언가를 추가해야 하고 다른 MQL 프로그램(및 다른 터미널)에서 이 추가된 모든 데이터를 읽어야 하는 경우 어떤 플래그와 함정이 있을 수 있습니까?

데이터 안전이 보장되어야 하지만 적어도 2가지 문제가 있다고 생각합니다.

- 동시 액세스와 동기화가 보장되지 않습니다. 이미 읽은 데이터를 다시 읽을 수 있으며 동시에 새 데이터 쓰기를 방지할 수 있습니다 - 충돌

- 그러한 상황을 감지하고 통제할 수단이 없음

평소와 같은 솔루션 - 세마포어 또는 고유한 레코드 관리자 작성

추신: 내장 SQLite 를 메모리에 배치하는 것이 가능한 것 같습니다. 적어도 거기에서 데이터베이스 상태를 제어할 수 있습니다.

 
Alexey Kozitsyn :

상위 5개에서 지표는 유사하게 작동하지만 정지 없이 모든 것이 정상입니다.

아니요, 상위 5개 지표는 도구 흐름에 있습니다.

 
MT5 버그(빌드 2340) 포인터 개체에서 기본 operator=에 액세스할 수 없습니다.

 class A{
public :
   char data;
   
   // uncomment to fix the bug
   //void operator=(A &a){this.data = a.data;}
};


// bypassing the bug
template < typename P1, typename P2>
void unref_assignment_operator(P1* &p1, P2* &p2){
   struct Functor{
       static void call(P1 &p1, P2 &p2){
         p1 = p2;
      }
   };
   Functor::call(p1, p2);
}

   
void OnStart (){      
   A a1;
   A a2;
   
   a2.data = 0x1 ;
   a1 = a2;
   printf ( "%d" , (a1.data));               // Ok, 0x1
   
   
   A* a_ptr_1 = &a1;
   A* a_ptr_2 = &a2;
   
   a2.data = 0x2 ;
   a1. operator =(a2);                       // 'operator=' - undeclared identifier 
   printf ( "%d" , (a1.data));               
   
   
   a2.data = 0x3 ;
   unref_assignment_operator(a_ptr_1, a_ptr_2); 
   printf ( "%d" , (a1.data));               // Ok, 0x3
}
 

정적 구조 기능을 디버그하려고 할 때 MT 터미널 충돌을 수정 하십시오.
위의 예에서도 "
p1 = p2; " 줄에서 중단점을 잡으면 터미널이 충돌합니다.

 
Andrey Khatimlianskii :

아니요, 상위 5개 지표는 도구 흐름에 있습니다.

미안하다, 속았다. 나는 이것이 정확히 4중주에서의 동작이라고 생각했습니다(즉, 5중에서와 같이 - 악기 흐름에서).

그리고 MT4 표시기의 일반 인터페이스 스트림에 대한 설명은 어디에 있습니까?

추가됨:

지시자

모든 표시기는 터미널의 그래픽 인터페이스 스레드의 리소스를 공유합니다.

하나의 표시기에서 무한 루프는 터미널 작업을 중지합니다


팁 감사합니다 찾았습니다.

그런 다음 디버거는 처음에 생각되지 않았지만 MT4에서 밝혀졌습니다. 지표를 위해 그를 부르는 것조차 금지됩니다.

 

버그를 보고할 위치를 정확히 모릅니다. 여기에서 보고하려고 합니다. MT5에서 문제의 본질: "+" 또는 "-" 버튼을 통해 차트 스케일링을 사용할 때 차트는 원래 위치로 돌아가지 않습니다(화면 오른쪽 가장자리에서 들여쓰기). 항상 수동으로 재설정해야 합니다.

MT4에서 - 그런 문제 없음.. 여러 브로커에게 확인했습니다.

&quot;+&quot;를 클릭한 후


매우 불편합니다... 고칠 수 있나요?

 
Alexey Kozitsyn :

그런 다음 디버거는 처음에 생각되지 않았지만 MT4에서 밝혀졌습니다. 지표를 위해 그를 부르는 것조차 금지됩니다.

그리고 그것은 처음부터 거기에 없었습니다. 그것은 깊이 생각하지 않습니다.

 
Roman Agafonkin :

버그를 보고할 위치를 정확히 모릅니다. 여기에서 보고하려고 합니다. MT5에서 문제의 본질: "+" 또는 "-" 버튼을 통해 차트 스케일링을 사용할 때 차트는 원래 위치로 돌아가지 않습니다(화면 오른쪽 가장자리에서 들여쓰기). 항상 수동으로 재설정해야 합니다.

MT4에서 - 그런 문제 없음.. 여러 브로커에게 확인했습니다.


매우 불편합니다... 고칠 수 있나요?

스케일링을 사용할 때 패딩은 다음 수신 틱에서 정상으로 돌아갑니다.

 
SEM :

스케일링을 사용할 때 패딩은 다음 수신 틱에서 정상으로 돌아갑니다.

문제의 사실은 그것이 반환되지 않는다는 것입니다 .. mt4에서 - 모든 것이 정상입니다 ... mt5에서 - 아아, 버그가 있습니다 ..
좋아, 나는 비디오를 만들어 이 스레드에 추가할 것이다.