IP를 통해 Java에서 MT4로 주문 보내기

 

여보세요,

IP를 통해 다른 컴퓨터(Java 앱 실행)에서 MT4로 간단한 주문(구매, 판매, 닫기)을 보낼 수 있는 방법이 있습니까?

양방향 통신이 필요하지 않습니다. 그냥 단방향.

미리 감사드립니다.

 
Mariop : IP를 통해 다른 컴퓨터(Java 앱 실행)에서 MT4로 간단한 주문(구매, 판매, 닫기)을 보낼 수 있는 방법이 있습니까? 양방향 통신이 필요하지 않습니다. 그냥 단방향.

예, 하지만 프로세스 간 통신을 위한 인터페이스는 내장되어 있지 않기 때문에 코딩해야 합니다. 지식과 경험을 필요로 하는 코딩은 당신과 같은 초보자가 쉽게 다룰 수 있는 것이 아닙니다.

그러니 프리랜스 섹션으로 가서 당신을 위해 자격을 갖춘 사람을 고용하십시오. 그러나 그것이 저렴할지는 의문입니다.

 
:) 답변 주셔서 감사합니다.
그럼에도 불구하고 나는 그렇게 초보자가 아니라고 생각합니다. 사실 저는 이미 몇 년 전에 TradePlatform.NET을 통해 C#으로 더 복잡한 일을 했지만 이번에는 Java 프로그램에서 그것들(주문)을 보내야 합니다. 그래서 MT4가 제가 요청한 방식으로 주문을 받을 수 있는 방법이 있다면 더 흥미로운 답변을 기다리고 있습니다.
 

나는 이미 당신에게 가장 적절한 대답을 주었습니다! 항상 네트워크의 파일을 사용하여 통신 방법으로 사용할 수 있지만 이는 느리고 번거롭습니다.

귀하가 이 질문을 했다는 사실은 MetaTrader/MQL 프로그래밍 환경에 관한 한 MQL/MetaTrader에 대해 상대적으로 덜 능숙하다는 것을 의미합니다. MQL 및 WinAPI에 매우 능숙했다면 채널, 명명된 파이프 , TCP/IP 등을 통해 다양한 IPC 솔루션에 대해 이미 알고 있었을 것이기 때문입니다. 대부분은 DLL 라이브러리를 통해 구현되지만 반드시 그렇지는 않습니다. .

 
Java에서 MT4를 연결하는 가장 쉬운(쉽지는 않지만) 방법은 소켓을 사용하는 것입니다. 코드 베이스 및 기사에 MQL에 대한 샘플 코드가 있습니다.
 
Ovo :
Java에서 MT4를 연결하는 가장 쉬운(쉽지는 않지만) 방법은 소켓을 사용하는 것입니다. 코드 베이스 및 기사에 MQL에 대한 샘플 코드가 있습니다.

Java에 대한 경험은 거의 없지만 두 컴퓨터가 동일한 로컬 네트워크에 있는 경우 FileOpen()을 통해 MQL4에서 지원하는 명명된 파이프가 가능하고 더 간단할 수 있습니다.

http://stackoverflow.com/questions/634564/how-to-open-a-windows-named-pipe-from-java

 
jjc :

Java에 대한 경험은 거의 없지만 두 컴퓨터가 동일한 로컬 네트워크에 있는 경우 FileOpen()을 통해 MQL4에서 지원하는 명명된 파이프가 가능하고 더 간단할 수 있습니다.

http://stackoverflow.com/questions/634564/how-to-open-a-windows-named-pipe-from-java

사실, 나는 자바에서 명명된 파이프에 대한 경험이 없지만 소켓은 자바에서 매우 일반적입니다. 또한 제공한 링크는 Java에서 명명된 파이프를 생성할 수 없고 기존 파이프에만 연결하는 것으로 보이며 네트워킹 솔루션이 아닌 프로세스 간 연결만 고려했습니다(호환될 수도 있고 아닐 수도 있음, 모름).

 
jjc :

Java에 대한 경험은 거의 없지만 두 컴퓨터가 동일한 로컬 네트워크에 있는 경우 FileOpen()을 통해 MQL4에서 지원하는 명명된 파이프가 가능하고 더 간단할 수 있습니다.

http://stackoverflow.com/questions/634564/how-to-open-a-windows-named-pipe-from-java


처음에는 두 컴퓨터가 동일한 LAN에 있지만 인터넷을 통해서도 작동하게 하는 것이 흥미로울 것입니다. 그러나 예, 동일한 LAN에서 지금은 충분할 것입니다.


오보 :
Java에서 MT4를 연결하는 가장 쉬운(쉽지는 않지만) 방법은 소켓을 사용하는 것입니다. 코드 베이스 및 기사에 MQL에 대한 샘플 코드가 있습니다.


네. 내가 찾은 최고의 솔루션은 mt4-zeromq를 사용하는 것 같지만 여전히 그것을 사용하여 거래를 실행하는 방법을 보여주는 예를 찾을 수 없습니다. 나는 이것이 (¿) 지연(?)이 없고 Linux 환경에서 사용할 수 있기 때문에 이것이 가장 좋은 방법일 수 있다고 생각합니다. 따라서 이에 대한 간단한 예제 코드는 감사하겠습니다.

그러나 내가 여전히 보고 있는 주요 문제는 지연입니다. 비슷한 것을 개발했지만 반대 방향(MT4가 외부 서버와 상호 작용함)에서 개발했을 때 MT4 시장 틱 사이에 새로운 정보가 없었기 때문에 그런 문제가 없었지만, 이 경우 MT4가 틱 사이에 어떻게 명령을 수신하고 실행할 수 있는지 알 수 없습니다. 문제가 되지 않을까요? 아니면 내가 뭔가를 놓치고 있는데 이것이 문제가 되지 않을까요?

 
Ovo :

사실, 나는 자바에서 명명된 파이프에 대한 경험이 없지만 소켓은 자바에서 매우 일반적입니다. 또한 제공한 링크는 Java에서 명명된 파이프를 생성할 수 없고 기존 파이프에만 연결하는 것으로 보이며 네트워킹 솔루션이 아닌 프로세스 간 연결만 고려했습니다(호환될 수도 있고 아닐 수도 있음, 모름).

"Named Pipes"는 WinAPI 함수를 호출하여 MT4 끝에서 먼저 생성되어야 합니다. 그래야만 JAVA에서 표준 파일로 사용할 수 있습니다. 그것이 OP가 원하는 것이지만 LAN 솔루션에만 이상적이기 때문에 문제가되어서는 안됩니다.

반면에 소켓은 LAN 및 WAN 솔루션 모두에 이상적이지만 MT4가 보다 쉽게 처리할 수 있도록 추가 지원 기능이 있는 WinAPI용 DLL 래퍼가 필요합니다.

그러나 가능한 솔루션에 대한 정보가 많기 때문에 OP는 "손가락으로 걷기만 하면 됩니다". 그는 Named Pips, Mapped Files, Sockets 또는 무엇이든 자신에게 가장 적합한 방법을 선택하기만 하면 됩니다.
 
Mariop : 하지만 여전히 내가 보고 있는 주요 문제는 지연입니다. 비슷한 것을 개발했지만 반대 방향(MT4가 외부 서버와 상호 작용 중)에서 개발했을 때 MT4 시장 틱 사이에 새로운 정보가 없었기 때문에 그런 문제는 없었습니다. 하지만 이 경우에는 MT4가 틱 사이에 어떻게 명령을 수신하고 실행할 수 있는지 알 수 없습니다. 문제가 되지 않을까요? 아니면 내가 뭔가를 놓치고 있는데 이것이 문제가 되지 않을까요?

들어오는 틱에 의존하지 않는 OnTimer() 이벤트 핸들러를 사용하여!

Mariop : 내가 찾은 최고의 솔루션은 mt4-zeromq를 사용하는 것 같지만 여전히 거래를 실행하는 데 사용하는 방법을 보여주는 예제를 찾을 수 없습니다.

타사 라이브러리에 의존하지 마십시오. MT4에 대한 처리를 용이하게 하기 위해 추가 지원 기능 으로 DLL을 코딩하기만 하면 됩니다. 종속성이 있고 C만큼 효율적이지 않기 때문에 C#이 아닌 C로 DLL을 코딩합니다.

또한 요구 사항에 적합한 고유한 메시지 형식/프로토콜을 고안하십시오. 작고 효율적으로 만들고 나중에 필요한 경우 보안을 위해 암호화해야 합니다.

 
FMIC :

타사 라이브러리에 의존하지 마십시오. MT4에 대한 처리를 용이하게 하기 위해 추가 지원 기능으로 DLL을 코딩하기만 하면 됩니다. 종속성이 있고 C만큼 효율적이지 않기 때문에 C#이 아닌 C로 DLL을 코딩합니다.

또한 요구 사항에 적합한 고유한 메시지 형식/프로토콜을 고안하십시오. 작고 효율적으로 만들고 나중에 필요한 경우 보안을 위해 암호화해야 합니다.

이제 첫 번째 답변보다 훨씬 더 흥미로운 답변이 있습니다. 나는 당신과 정말 좋은 조언에 절대적으로 동의합니다. 몇 년 전에 자체 플랫폼을 개발한 이후로 MQL을 그만뒀습니다. 이제 MT4와 독점적으로 작동하는 브로커와 협업을 시작하려고 하므로 MT4에 연결할 브리지를 만들어야 합니다. 그렇기 때문에 가능한 한 빨리 작업을 수행하기 위해 서두르고 있습니다.


FMIC :

들어오는 틱에 의존하지 않는 OnTimer() 이벤트 핸들러를 사용하여!


진실. 감사해요. 나는 그것을 기억하지 못했다. 실제로 거의 즉시 실행되는 명령이 필요하기 때문에 문제를 완전히 해결하지 못합니다 . 그것을 사용.

다시 한 번, 좋은 조언 ;)

사유: