두 MT4 터미널 간의 데이터 교환? - 페이지 3

 
granit77 :
goldtrader : 한 EA가 쓰기 위해 파일을 열고 파일이 아직 닫히지 않은 상태에서 다른 EA가 읽기 위해 열어(또는 열려고 하면) 충돌 상황이 아닌가요?
과학의 힘을 자신하는 나에게 상황은 다소 드라마틱해 보인다. 적어도 10명을 읽을 수 있고 쓰기 금지 플래그 등을 사용할 수 있는지 확인합니다.이것은 순전히 기술적인 문제이며 장애물이 아니며 어디에서나 API를 사용하여 오랫동안 파일을 읽고 썼습니다. 이전에 사용되지 않았던 다른 단말간 정보 전송 방식이 흥미롭다. 예를 들어 정보를 Windows 환경 변수로 전달합니다.
동의한다. 또한 파일 없이 데이터를 전송하여 더 빠르고 안정적으로 만들고 싶습니다. 하지만 아직까지는 이에 대해 뭐라고 할 사람이 없는 것 같아서 모두가 파일을 통한 전송에 집착하고 있는 것 같습니다(((
 
goldtrader :
중력001 :

하나의 EA는 항상 파일에 쓰고 다른 EA는 항상 이 파일을 읽고 어떤 순서로 발생하는지는 중요하지 않기 때문에 문제가 없습니다. 데이터의 관련성을 확인하기 위해 현지 시간을 사용했습니다. 따옴표는 100밀리초마다 기록되고 관련성은 현지 시간으로 확인됩니다.


한 Expert Advisor가 쓰기 위해 파일을 열고 파일이 아직 닫히지 않은 상태에서 다른 Expert Advisor가 읽기 위해 파일을 열어(또는 열려고 시도하는) 충돌 상황이 아닙니까?
아니요, 충돌이 아닙니다. 적어도 파일이 쓰기 위해 열려 있는 경우에도 읽을 수 있기 때문입니다. 이제 동일한 파일을 동시에 녹음을 위해 두 번 열면 충돌이 발생합니다.
 
zhuki :

참고로, terminal.exe를 4번 클릭하면 같은 터미널의 복사본 2개가 열리며 거기에서 경로는 같아야 합니다.

누르려고 했으나 실패했습니다. 정말 효과가 있나요?
 
gravity001 :

또한 파일 없이 데이터를 전송하여 더 빠르고 안정적으로 만들고 싶습니다. 하지만 지금까지는 이에 대해 말할 사람이 아무도 없는 것 같아서 모두 파일을 통한 전송에 집착하고 있습니다(((

그리고 2개의 응용 프로그램에 대해 액세스할 수 있는 권한이 있는 메모리 공간을 예약할 수 있습니까?

이것은 또한 다음과 같은 종류의 오류를 유발하는 명백한 충돌과 같습니다.




0009 0x0009 제어 메모리 블록의 잘못된 주소

0998 0x03E6 메모리 주소에 대한 잘못된 액세스 시도

응용 프로그램 중 하나가 액세스 권한이 없는 메모리 주소에 액세스하려고 합니다.


 
D500_Rised :
중력001 :

또한 파일 없이 데이터를 전송하여 더 빠르고 안정적으로 만들고 싶습니다. 하지만 지금까지는 이에 대해 말할 사람이 아무도 없는 것 같아서 모두 파일을 통한 전송에 집착하고 있습니다(((

그리고 2개의 응용 프로그램에 대해 액세스할 수 있는 권한이 있는 메모리 공간을 예약할 수 있습니까?

이것은 또한 다음과 같은 종류의 오류를 유발하는 명백한 충돌과 같습니다.




0009 0x0009 제어 메모리 블록의 잘못된 주소

0998 0x03E6 메모리 주소에 대한 잘못된 액세스 시도

응용 프로그램 중 하나가 액세스 권한이 없는 메모리 주소에 액세스하려고 합니다.


아닐 수도 있고, 잘 모르겠습니다. 여기 이 스레드 https://forum.mql4.com/en/3393에서 그들은 GlobalAddAtom에 대해 썼습니다. 내가 올바르게 이해했다면 이런 식으로 파일 없이 변수를 전송할 수 있습니다. 기억을 통해. 하지만 어떻게 해야할지 모르겠어


당신은 예를 들어, 당신이 그것을 시도한 방법을 말해?

 

아, 또 생각이 났습니다. Vindos 클립보드는 메모리 주소를 참조하지 않고 응용 프로그램에 읽고 쓸 수 있습니다!

Буфер обмена ( clipboard )- набор функций и сообщений, который делает возможным передачу данных в прикладные программы, разработанные при помощи Microsoft ® Win32 ® прикладного программного интерфейса ( API ). Поскольку все прикладные программы имеют доступ к буферу обмена, данные могут быть легко перемещаемы между приложениями или внутри прикладной программы.

그러나 여기에 바퀴에 작은 막대가 하나 더 있습니다.

클립보드는 사용자가 제어합니다. 창은 사용자의 명령에 대한 응답으로 클립보드로 또는 클립보드에서 데이터를 전송해야만 합니다. 윈도우는 사용자에게 알리지 않고 클립보드를 사용하여 데이터를 전송해서는 안 됩니다.

따라서 API만 :^(

 
D500_Rised :

아, 또 생각이 났습니다. Vindos 클립보드는 메모리 주소를 참조하지 않고 응용 프로그램에 읽고 쓸 수 있습니다!

클립보드( 클립보드 ) - Microsoft ® Win32 ® API (응용 프로그래밍 인터페이스)를 사용하여 개발된 응용 프로그램으로 데이터를 전송할 수 있도록 하는 기능 및 메시지 집합입니다. 모든 응용 프로그램은 클립보드에 액세스할 수 있으므로 응용 프로그램 간에 또는 응용 프로그램 내에서 데이터를 쉽게 이동할 수 있습니다.

그러나 여기에 바퀴에 작은 막대가 하나 더 있습니다.

클립보드는 사용자가 제어합니다. 창은 사용자의 명령에 대한 응답으로 클립보드로 또는 클립보드에서 데이터를 전송해야만 합니다. 윈도우는 사용자에게 알리지 않고 클립보드를 사용하여 데이터를 전송해서는 안 됩니다.

따라서 API만 :^(

이해가 되는 것 같긴 한데 어떻게 구현해야 할지 구체적으로 알려주실 수 있나요?
 

Win 32 API를 스스로 배우거나 인계받을 코더를 찾으십시오. 여기의 선택은 훌륭하지 않습니다.

그러나 제 생각에는 이 시스템은 비용 가치가 없습니다.

 
gravity001 :
주키 :

참고로, terminal.exe를 4번 클릭하면 같은 터미널의 복사본 2개가 열리며 거기에서 경로는 같아야 합니다.

누르려고 했으나 실패했습니다. 정말 효과가 있나요?
이번에도 같은 단말기 2개를 열어보려고 했는데, 이건 제가 직접 생각해낸 것이 아니라 잘 알려진 사실입니다.
 
다음은 토론입니다. https://forum.mql4.com/en/9244#49606