첫 번째 선택: 이 기능은 수표에 대한 단어가 아니라 거래 작업을 수행 하기 위한 것임을 알 수 있습니다.
글쎄, 내가 수표가 있다고 말하면 그것은 사실입니다.
단 하나의 애플리케이션도 엄격한 검사 없이 터미널을 떠나지 않습니다.
두 번째 선택: 서버에서 검사가 수행되고 서버로 보내기 전에 요청을 확인하기 위해 개발자는 OrderCheck() 함수를 사용하는 것이 좋습니다. 그리고 다시, OrderSend() 함수가 어떤 종류의 검사를 수행한다는 단어는 없습니다.
특히 거래자가 주문이 올바르게 채워졌는지 미리 확인하고 적절한 조치를 취할 수 있는 기회를 가질 것을 권장합니다.
원하는 사람 - 미리 확인할 수 있습니다. 원하지 않는 경우 어쨌든 그를 확인하고 유사한 답변을 반환합니다.
요청을 보내기 전에 확인하는 것에 대해 언급된 유일한 곳은 "구조의 기본 확인(포인터 확인)에 성공한 경우 ...."입니다. 그러나 오류 요청 구조의 포인터를 확인하는 것과 필드 값을 확인하는 것은 같은 것이 아닙니다. 그리고 OrderCheck() 함수를 사용하라는 개발자의 권장 사항은 OrderSend()가 서버에 요청을 보내기 전에 실제 오류 검사를 수행하지 않는다는 간접적인 증거입니다. 그렇지 않으면 왜 "버터 오일"을 수행합니까? 먼저 OrderSend() 검사를 수행한 다음 OrderCheck()를 사용하여 동일한 검사를 다시 수행해야 합니까?
나는 가지고있다. 비즈니스 로직은 비즈니스 로직과 관련된 이벤트(예: 주문 실패)를 처리하지만 나머지 모든(예: 서버 응답 지연)은 범용 템플릿에 의해 처리되며 이를 기반으로 모든 Expert Advisor를 절대적으로 구현할 수 있습니다. .
그러나 MT5는 반환 코드 + 비동기 처리 측면에서 훨씬 더 어렵습니다.
이것은 내가 이전에 비슷하게 썼듯이 우리가 이야기하고 있는 것이며 이 문제에 대한 정보는 없습니다. 그리고 MK는 지금까지 수년 동안 그 제공에서 스스로를 분리하기 위해 가능한 모든 방법을 시도했습니다. 나는 이것에 대해 썼습니다. 제품은 배수로 이어지는 순간이 있는 딜러에게 유익합니다. MQ의 경우 이는 매출 증대 요인입니다. 아아, 우리는 동지가 아닌 경쟁자(우리와 MQ)가 있는 시장에 있습니다.
당신은 래퍼에서 불가능한 것을 요구하고 있습니다. 표준 라이브러리는 비즈니스 로직이 아닙니다. 이것은 터미널의 기능을 "오버"하는 래퍼입니다. 사탕 충전물 위에 래퍼입니다.
그렇다면 그러한 구조적 디자인에는 의미가 거의 없습니다.
그러나 래퍼는 당신이 보증인이기 때문에 아무것도 보장할 수 없습니다. 당신의 비즈니스 논리. 충전재. :)
인쇄 기능과 마찬가지로 디스크 여유 공간을 보장할 수 없습니다. 그리고 로깅 오류. 이렇게 하려면 다른 기능의 오류 처리를 사용해야 하며 해당 기능은 경우에 따라 다릅니다.
이미 특정 항목에 대해 반복해서 썼습니다. MQ가 기성품 솔루션을 제공할 수 없다면 최소한 오류 및 반환 코드 처리에 대한 지침을 만들도록 하십시오. 가능한 모든 방법으로 잠금 해제됩니다. 4에 대한 문서에서 이것은 부분적으로 존재했습니다(예: 이런 경우 30초 대기). 부분적으로 사용자는 경험에서 문서화되지 않은 상황의 처리를 결정했습니다. 5에 대한 것은 없습니다. 그렇다면 아무도 그것을 사용하지 않을 것입니다.
글쎄요, 막 생성된 거래 인프라가 기본적으로 이것을 허용하지 않기 때문에 MQ가 이런 식으로 대답한다면, 제가 뭐라고 말할 수 있습니까? 다른 잼이 엄청나게 많다는 점을 감안할 때 이것은 전체 MT5 프로젝트의 완전한 실패입니다.
원하는 경우 각 반환 코드를 살펴보고 가능한 주요 상황을 확인할 수 있습니다.
나는 당신과 같은 MQL5의 경험이 있는 사람과 이것을 하고 싶습니다. 시간과 필요성이 있을 때까지 기다리십시오. 많은 계획에서 훨씬 더 편리한 4개가 더 있지만 하나님께 감사드립니다.
예를 들면 10004입니다. 무엇을 해야 하는지 어디에 쓰여 있습니까? 그리고 네 번째 문서에는 최소한 다음과 같은 내용이 있었습니다.
Можно без задержки обновить данные при помощи функции RefreshRates и повторить попытку. Если ошибка не исчезает, необходимо прекратить все попытки торговых операций и изменить логику программы.
동료들은 이미 진실을 찾는 데 지쳤습니다. 주제가 제가 필요한 내용과 비슷해서 도움을 청하면서 여기에 글을 씁니다!
나는 즉시 실행 으로 주문을 하고, 모든 틱이 멈추는 동안 가격을 확인하고 가능하면 추적합니다. 그런데 어떤 이유에서인지 항상 10013 오류가 반환됩니다.나는 가능한 모든 포럼을 검색하고 초기 주문의 거의 모든 라인을 추가했습니다(설명에 이러한 유형의 작업에는 symbol, action, sl 및 tp만 있으면 충분하다고 나와 있지만. 도움이 되지 않습니다! 코드는 다음과 같습니다.
나에게 그것은 기능을 통해서만 정확하게 구현됩니다.
이해했다. 코드에서 MK와 같은 방식으로 - OrderCheck 와 OrderSend 사이에는 사용자가 처리하는 오류 계층이 있습니다.
나에게 그것은 기능을 통해서만 정확하게 구현됩니다.
OrderCheck는 암시적으로 그리고 반드시 OrderSend 내부에서 확인됩니다.
따라서 주문이 잘못 채워지면 응답은 서버로 전송되지 않고 즉시 반환됩니다.
매뉴얼이 이에 대해 무엇이라고 말하는지 봅시다.
첫 번째 선택: 이 기능은 수표에 대한 단어가 아니라 거래 작업을 수행 하기 위한 것임을 알 수 있습니다.
글쎄, 내가 수표가 있다고 말하면 그것은 사실입니다.
단 하나의 애플리케이션도 엄격한 검사 없이 터미널을 떠나지 않습니다.
두 번째 선택: 서버에서 검사가 수행되고 서버로 보내기 전에 요청을 확인하기 위해 개발자는 OrderCheck() 함수를 사용하는 것이 좋습니다. 그리고 다시, OrderSend() 함수가 어떤 종류의 검사를 수행한다는 단어는 없습니다.
특히 거래자가 주문이 올바르게 채워졌는지 미리 확인하고 적절한 조치를 취할 수 있는 기회를 가질 것을 권장합니다.
원하는 사람 - 미리 확인할 수 있습니다. 원하지 않는 경우 어쨌든 그를 확인하고 유사한 답변을 반환합니다.
요청을 보내기 전에 확인하는 것에 대해 언급된 유일한 곳은 "구조의 기본 확인(포인터 확인)에 성공한 경우 ...."입니다. 그러나 오류 요청 구조의 포인터를 확인하는 것과 필드 값을 확인하는 것은 같은 것이 아닙니다. 그리고 OrderCheck() 함수를 사용하라는 개발자의 권장 사항은 OrderSend()가 서버에 요청을 보내기 전에 실제 오류 검사를 수행하지 않는다는 간접적인 증거입니다. 그렇지 않으면 왜 "버터 오일"을 수행합니까? 먼저 OrderSend() 검사를 수행한 다음 OrderCheck()를 사용하여 동일한 검사를 다시 수행해야 합니까?
따라서 디렉토리에서 확인이 서버에서만 독점적으로 수행된다는 확실한 대답이 이어집니다!
아무도 서버에 대한 잘못된 요청 또는 과도한 요청 흐름을 놓치지 않을 것입니다.
이를 이해하려면 기본 논리로 충분합니다. 문서를 확장해 보겠습니다.
당신은 그것을 가지고 있지 않습니다. 모든 오류는 비즈니스 로직에 의해 처리됩니다.
나는 가지고있다. 비즈니스 로직은 비즈니스 로직과 관련된 이벤트(예: 주문 실패)를 처리하지만 나머지 모든(예: 서버 응답 지연)은 범용 템플릿에 의해 처리되며 이를 기반으로 모든 Expert Advisor를 절대적으로 구현할 수 있습니다. .
그러나 MT5는 반환 코드 + 비동기 처리 측면에서 훨씬 더 어렵습니다.
이것은 내가 이전에 비슷하게 썼듯이 우리가 이야기하고 있는 것이며 이 문제에 대한 정보는 없습니다. 그리고 MK는 지금까지 수년 동안 그 제공에서 스스로를 분리하기 위해 가능한 모든 방법을 시도했습니다. 나는 이것에 대해 썼습니다. 제품은 배수로 이어지는 순간이 있는 딜러에게 유익합니다. MQ의 경우 이는 매출 증대 요인입니다. 아아, 우리는 동지가 아닌 경쟁자(우리와 MQ)가 있는 시장에 있습니다.
당신은 래퍼에서 불가능한 것을 요구하고 있습니다. 표준 라이브러리는 비즈니스 로직이 아닙니다. 이것은 터미널의 기능을 "오버"하는 래퍼입니다. 사탕 충전물 위에 래퍼입니다.
그렇다면 그러한 구조적 디자인에는 의미가 거의 없습니다.
인쇄 기능과 마찬가지로 디스크 여유 공간을 보장할 수 없습니다. 그리고 로깅 오류. 이렇게 하려면 다른 기능의 오류 처리를 사용해야 하며 해당 기능은 경우에 따라 다릅니다.
올바른 래퍼라도 모든 것을 보장할 수는 없지만 많은 관련 기능이 보장할 수 있습니다.
이미 특정 항목에 대해 반복해서 썼습니다. MQ가 기성품 솔루션을 제공할 수 없다면 최소한 오류 및 반환 코드 처리에 대한 지침을 만들도록 하십시오. 가능한 모든 방법으로 잠금 해제됩니다. 4에 대한 문서에서 이것은 부분적으로 존재했습니다(예: 이런 경우 30초 대기). 부분적으로 사용자는 경험에서 문서화되지 않은 상황의 처리를 결정했습니다. 5에 대한 것은 없습니다. 그렇다면 아무도 그것을 사용하지 않을 것입니다.
글쎄요, 막 생성된 거래 인프라가 기본적으로 이것을 허용하지 않기 때문에 MQ가 이런 식으로 대답한다면, 제가 뭐라고 말할 수 있습니까? 다른 잼이 엄청나게 많다는 점을 감안할 때 이것은 전체 MT5 프로젝트의 완전한 실패입니다.
원하는 경우 각 반환 코드를 살펴보고 가능한 주요 상황을 확인할 수 있습니다.
나는 당신과 같은 MQL5의 경험이 있는 사람과 이것을 하고 싶습니다. 시간과 필요성이 있을 때까지 기다리십시오. 많은 계획에서 훨씬 더 편리한 4개가 더 있지만 하나님께 감사드립니다.
-Alexey- :
기성 솔루션, 최소한 오류 및 반환 코드 처리에 대한 가이드
어떤 코드가 처리 문제를 일으키나요?
코드
식별자
설명
10004
TRADE_RETCODE_REQUOTE
인용하다
10006
TRADE_RETCODE_REJECT
요청 거부됨
10007
TRADE_RETCODE_CANCEL
거래자가 요청을 취소했습니다.
10008
TRADE_RETCODE_PLACED
주문 완료
10009
TRADE_RETCODE_DONE
신청 완료
10010
TRADE_RETCODE_DONE_PARTIAL
신청이 부분적으로 완료됨
10011
TRADE_RETCODE_ERROR
요청 처리 오류
10012
TRADE_RETCODE_TIMEOUT
시간 초과로 인해 취소된 요청
10013
TRADE_RETCODE_INVALID
잘못된 요청
10014
TRADE_RETCODE_INVALID_VOLUME
요청의 잘못된 볼륨
10015
TRADE_RETCODE_INVALID_PRICE
요청에 잘못된 가격
10016
TRADE_RETCODE_INVALID_STOPS
요청에서 잘못된 중지
10017
TRADE_RETCODE_TRADE_DISABLED
거래 금지
10018
TRADE_RETCODE_MARKET_CLOSED
시장이 닫혀있다
10019
TRADE_RETCODE_NO_MONEY
요청을 이행하기에 자금이 충분하지 않습니다
10020
TRADE_RETCODE_PRICE_CHANGED
가격이 변경되었습니다
10021
TRADE_RETCODE_PRICE_OFF
요청을 처리할 따옴표가 없습니다.
10022
TRADE_RETCODE_INVALID_EXPIRATION
요청에 잘못된 주문 만료 날짜가 있습니다.
10023
TRADE_RETCODE_ORDER_CHANGED
주문 상태가 변경되었습니다
10024
TRADE_RETCODE_TOO_MANY_REQUESTS
너무 잦은 요청
10025
TRADE_RETCODE_NO_CHANGES
요청에 변경 사항이 없습니다.
10026
TRADE_RETCODE_SERVER_DISABLES_AT
서버에서 자동 거래를 금지합니다.
10027
TRADE_RETCODE_CLIENT_DISABLES_AT
클라이언트 단말기에서 자동 거래를 금지합니다.
10028
TRADE_RETCODE_LOCKED
처리를 위해 차단된 요청
10029
TRADE_RETCODE_FROZEN
주문 또는 위치가 동결됨
10030
TRADE_RETCODE_INVALID_FILL
잔액 별로 지원되지 않는 주문 실행 유형 이 지정되었습니다.
10031
TRADE_RETCODE_CONNECTION
거래 서버에 연결되지 않음
10032
TRADE_RETCODE_ONLY_REAL
실제 계정에 대해서만 작업이 허용됩니다.
10033
TRADE_RETCODE_LIMIT_ORDERS
보류 중인 주문 수의 한도에 도달했습니다.
10034
TRADE_RETCODE_LIMIT_VOLUME
이 기호에 대한 주문 및 위치의 한도에 도달했습니다.
예를 들면 10004입니다. 무엇을 해야 하는지 어디에 쓰여 있습니까? 그리고 네 번째 문서에는 최소한 다음과 같은 내용이 있었습니다.
Можно без задержки обновить данные при помощи функции RefreshRates и повторить попытку. Если ошибка не исчезает, необходимо прекратить все попытки торговых операций и изменить логику программы.
어떤 코드가 처리 문제를 일으키나요?
10006 (어떤 이유로 거부되었으며 다른 코드에 표시되지 않은 다른 이유는 무엇입니까?)
10011, 10013, 10028
10006 (어떤 이유로 거부되었으며 다른 코드에 표시되지 않은 다른 이유는 무엇입니까?)
10011, 10013, 10028
동료들은 이미 진실을 찾는 데 지쳤습니다. 주제가 제가 필요한 내용과 비슷해서 도움을 청하면서 여기에 글을 씁니다!
나는 즉시 실행 으로 주문을 하고, 모든 틱이 멈추는 동안 가격을 확인하고 가능하면 추적합니다. 그런데 어떤 이유에서인지 항상 10013 오류가 반환됩니다.나는 가능한 모든 포럼을 검색하고 초기 주문의 거의 모든 라인을 추가했습니다(설명에 이러한 유형의 작업에는 symbol, action, sl 및 tp만 있으면 충분하다고 나와 있지만. 도움이 되지 않습니다! 코드는 다음과 같습니다.