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

 
fxsaber :


ForexTimeFXTM-Demo01 에 대한 결과


스크립트는 "유령 주문"을 찾을 때까지 위치를 열고 닫습니다. 현재 주문이나 기록에서 모두 아닙니다. 이것을 버그나 플랫폼의 기능이라고 생각하십니까?


추신: 스크립트는 이러한 뉘앙스 로 인해 여러 위치가 열릴 수 있는 방식으로 작성되었습니다. 그러나 이것이 "팬텀 오더"의 수신을 막지는 않습니다.

지루하게 들리고 싶지 않지만 다음과 같은 표현이 있습니다.

( ENUM_ORDER_TYPE )( 1 - PositionGetInteger ( POSITION_TYPE ))

코드를 이해하기 어렵게 만듭니다. 아마도 주어진 열거 형의 모든 숫자 값과 순서를 기억하지만 다른 사람들은 이러한 내부를 모를 수 있습니다. enum을 이렇게 취급해서는 안됩니다. 간결함은 물론 재능의 자매이지만 품질을 희생하지 않는 경우에만 가능합니다.

그리고 논의 중인 이슈에 대해서는 오픈 포지션에 대해 result.order가 아닌 order.deal을 확인해야 합니다. 따라서 오더가 아닌 포지션에서 찾아야 합니다. 안 그래?

 
Alexey Navoykov :

간결함은 물론 재능의 자매이지만 품질을 희생하지 않는 경우에만 가능합니다.

일반적인 MQL 작업인 것 같습니다.

그리고 논의 중인 이슈에 대해서는 오픈 포지션에 대해 result.order가 아닌 order.deal을 확인해야 합니다. 따라서 오더가 아닌 포지션에서 찾아야 합니다. 안 그래?

OrderSend 직후에 전송된 원래 주문은 어디로도 끝나지 않을 수 있습니다. 위치는 주문보다 훨씬 늦습니다.


추신: 코드에서 거래 알고리즘의 가장 이해하기 쉬운 언어인 MQL4를 주석에 특별히 남겼습니다.

 
fxsaber :

OrderSend 직후에 전송된 원래 주문은 어디로도 끝나지 않을 수 있습니다. 위치는 주문보다 훨씬 늦습니다.

예, 원칙적으로 이것은 요점이 아닙니다. 실제로 문서에 따르면 OrderSend는 티켓을 받을 필요가 없습니다.

시장 주문(MqlTradeRequest.action= TRADE_ACTION_DEAL )을 보낼 때 OrderSend() 함수의 성공적인 결과는 주문이 실행되었음을 의미하지 않습니다(해당 거래가 실행됨). 이 경우 true는 주문이 완료되었음을 의미합니다. 추가 실행을 위해 거래 시스템에 성공적으로 배치되었습니다. 거래 서버 OrderSend() 호출에 대한 응답이 형성될 때 이 데이터를 알고 있는 경우 반환된 결과 구조에서 거래 또는 주문 필드 의 값을 채울 수 있습니다. 일반적으로 OrderSend() 호출에 대한 응답이 전송된 후 주문에 해당하는 트랜잭션 실행 이벤트가 발생할 수 있습니다. 따라서 모든 종류의 거래 요청에 대해 OrderSend() 실행 결과를 수신할 때 먼저 거래 서버 retcode 의 반환 코드 와 외부 거래 시스템 retcode_external (필요한 경우) 의 응답 코드를 확인해야 합니다. 반환된 결과 구조 에서 사용할 수 있습니다 .

따라서 어떤 경우에도 OnTradeTransaction 없이는 할 수 없습니다.

저것들. MQL5에는 보장된 동기 거래 작업이 없다는 것이 밝혀졌습니다.

 
Alexey Navoykov :

예, 원칙적으로 이것은 요점이 아닙니다. 실제로 문서에 따르면 OrderSend는 티켓을 받을 필요가 없습니다.

따라서 OnTradeTransaction은 어쨌든 확인해야 합니다.

반드시 확인해야 하는 것은 아닙니다. 선택 사항일 뿐입니다.

동기 OrderSend를 실행한 후 0이 아닌 Result.order는 항상 주문이 등록된 거래 서버로부터 응답이 수신되었음을 나타냅니다. 이 티켓은 서버에서 제공됩니다. 그리고 OrderSend가 성공하면 이 티켓은 항상 수신됩니다.

문제는 OrderSend 때문이 아니라 현재 주문이 거래로 수락되었기 때문인 것 같습니다. 이러한 경우에 ORDER_STATE_REQUEST_ADD 가 있지만. 일반적으로 MQ의 응답을 기다리고 있습니다. 내 생각에 이것은 무역 서버에 주문이 있을 때의 버그이며, 터미널에서 동기식 OrderSend 이후에는 그것에 대해 숨이 막히지 않습니다.

 
fxsaber :

일반적으로 MQ의 응답을 기다리고 있습니다. 내 생각에 이것은 무역 서버에 주문이 있을 때의 버그이며, 터미널에서 동기식 OrderSend 이후에는 그것에 대해 숨이 막히지 않습니다.

더 말하지만, 우리는 OrderSend가 터미널과 서버 모두에서 완전히 동기화되도록 개발자에게 요청해야 합니다. 그렇지 않고 실행 동기화가 보장되지 않는 경우 이 기능이 필요한 이유는 무엇입니까? 이러한 목적을 위해 이미 OrderSendAsync 가 있습니다.

 
Dmitriy :

안녕하세요. 오늘 버전 1860으로 업그레이드하고 EA를 최적화하는 동안 다음 문제가 발생했습니다.

패스 사이의 지연은 1분입니다! 말해 주세요. 무슨 문제가 될까요?

ps. 업데이트 전에는 모든 것이 시계처럼 작동했습니다.

Bar 기능을 사용한 적이 있습니까?
그렇다면 이것을 참조 하십시오 .

 

질문:

공유 파일을 만드는 것이 합리적일까요? 이제 저는 범용 코드를 작성하고 있습니다. mt 4와 mt 5 모두에서 편집 없이 작동합니다. 저를 괴롭히는 유일한 것은 mq4와 mq5의 지속적인 이름 바꾸기입니다. 프로젝트 와 관련하여 아이디어를 얻었습니다. 다음과 같은 일반적인 확장을 만들 수 있습니까? mq?

그리고 확장자를 편집하지 않고 단순히 터미널에서 터미널로 코드를 복사할 수 있습니다...

 
Vladimir Pastushak :

질문:

공유 파일을 만드는 것이 합리적일까요? 이제 나는 범용 코드를 작성하고 있으며 mt 4와 mt 5 모두에서 편집 없이 작동합니다. 나를 괴롭히는 유일한 것은 mq4와 mq5의 지속적인 이름 바꾸기입니다.

그리고 확장자를 편집하지 않고 단순히 터미널에서 터미널로 코드를 복사할 수 있습니다...

그리고 누가 이러한 코드를 mqh 파일에 작성하고 (#include)를 사용하여 포함하는 것을 금지합니다. 이것이 내가 꽤 오랫동안 하고 있는 일입니다.

 
Konstantin Nikitin :

그리고 누가 이러한 코드를 mqh 파일에 작성하고 (#include)를 사용하여 포함하는 것을 금지합니다. 지금 꽤 오랫동안 하고 있는 일입니다.

당신은 연결, 나는 내선을 변경합니다 ... 이웃 ...

 
Alexey Navoykov :

더 말하지만 우리는 OrderSend가 터미널과 서버 모두에서 완전히 동기화되도록 개발자에게 요청해야 합니다. 그렇지 않고 실행 동기화 가 보장되지 않는 경우 이 기능이 필요한 이유는 무엇입니까? 이러한 목적을 위해 이미 OrderSendAsync가 있습니다.

해명하겠습니다. 플랫폼의 거래 시스템과 터미널 자체에서 ORDER를 배치하는 동기화.