OrderSendAsync() 함수

 

설명에 따르면 OrderSendAsync() 함수는 보낸 요청 에 대한 서버의 응답을 기다리지 않고 비동기 작업을 수행하도록 설계되었습니다 . 성공하면 결과 변수의 응답 코드에 TRADE_RETCODE_PLACED( 코드 10008) – "주문 완료" 값이 포함됩니다. 성공적인 실행은 ... 요청이 거래 서버에 도달했고 처리를 위해 수락되었다는 보장을 제공하지 않습니다.

한편으로, 우리는 retcode 필드가 거래 서버의 반환 코드를 포함 한다는 것을 알고 있습니다. 이 코드는 사용자 터미널이 아닌 서버에서 생성되어야 합니다. 반면에 핸드북 에는 OrderSendAsync() 함수의 경우 거래 요청 자체가 거래 서버에 도달하지 않은 경우에도 서버에서 생성해야 하는 코드 중 하나(코드 10008)가 반환될 수 있다고 명시되어 있습니다.

질문 1: OrderSendAsync 함수에 대해 코드 10008이 정확히 어디에서(어느 단계에서) 생성됩니까? [이 코드는 거래 서버의 참여 없이 반환될 수 있다는 점을 고려합니다.]

질문 2: 코드 10008은 거래 서버 코드입니까, 아니면 이 코드는 서버가 거래 요청을 받기 전에 클라이언트 단말기 측에 생성된 것입니까?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 

1. 성공적으로 전송 작업을 수행한 터미널(주문이 항공기에서 성공적으로 떨어졌으며 더 이상 알 수 없음)

2. 동어반복에 대해 사과하지만 같은 방식으로 대답하겠습니다. 예, 코드 10008은 무역 서버 응답 코드입니다. 예, 이 코드는 현재 터미널을 내려놓습니다... 더 나아가 포인트 1.

이미 명시적으로 작성된 내용을 줄 사이에서 찾으려고 하는 이유는 무엇입니까?

 

거래 주문의 비동기 모델에는 많은 이벤트와 주문 상태가 포함됩니다.

시장 주문 상태 다이어그램

조건부 주문 상태 다이어그램

현재 MT5:

  1. CREATED - OrderSendAsync 및 OrderSend 함수를 호출하는 바로 그 사실(MT5의 이 주문 상태는 외부에서 식별할 수 없음).
  2. CANCELED가 즉시 발생하면(터미널 자체가 필터를 통과합니다. 예를 들어 제한 주문이 현재 주문보다 나쁨) OrderSend 및 OrderSendAsync에서 응답이 부정적입니다.
  3. OPENED는 OrderSendAsync에 대한 TRADE_RETCODE_PLACED(주문이 터미널의 내부 필터를 성공적으로 통과하여 서버로 전송됨)의 결과입니다.
  4. SUBMIT_OK - 서버가 거래 요청을 수락했습니다. 지연되는 경우 OrderSend는 실행을 완료합니다. If Market - 우리는 계속 기다립니다.
  5. 채워짐 - 주문이 실행 상태에 있습니다(예: STP를 통해 전송되고 응답 대기). 우리는 계속 기다리고 있습니다.
  6. FILL_OK - 충족. If Market - OrderSend가 실행을 완료합니다.

자세한 내용은 위의 다이어그램을 참조하십시오.

 
Rosh :

1. 성공적으로 전송 작업을 수행한 터미널(주문이 항공기에서 성공적으로 떨어졌으며 더 이상 알 수 없음)

2. 동어반복에 대해 사과하지만 같은 방식으로 대답하겠습니다. 예, 코드 10008은 무역 서버 응답 코드입니다. 예, 이 코드는 현재 터미널을 내려놓습니다... 더 나아가 포인트 1.

이미 명시적으로 작성된 내용을 줄 사이에서 찾으려고 하는 이유는 무엇입니까?

나는 "선 사이"를 찾고 있지 않습니다. 그리고 다시 한 번 저는 두 가지(현재 이미) 거래 기능의 작업 단계를 이해하려고 노력하고 있습니다.

OrderSendAsync 함수에 대한 메모에서 "함수는 목적과 매개변수가 OrderSend() 와 유사합니다"라고 말합니다. 그러나 귀하의 답변으로 판단하면 OrderSendAsync 기능의 목적은 OrderSend 기능과 정확히 동일하지 않습니다. 후자는 서버에서 거래 요청을 확인하기 위한 것이므로 OrderSend() 함수에 의해 반환된 코드는 다른 물질이 아니라 서버 자체에서 생성된 코드입니다. OrderSendAsync() 함수의 경우 반환 코드는 터미널에서 생성되므로 이러한 코드(코드 10008)는 서버 반환 코드로 간주될 수 없습니다. 이것은 공식적으로 서버 코드 목록에서 고려하더라도 "터미널에서 생성한 코드"입니다.

즉, 두 가지 기능 - "코드는 서버에서 생성됨" vs "코드는 터미널에서 생성됨"의 두 가지 접근 방식입니다. 이와 관련하여 기능은 동일하지 않습니다. 이 미묘함에 대한 지식은 서버 또는 터미널에서 정확히 "반환 코드"가 누구에게서 오는지 정확하게 이해하는 데 필요합니다.

 
hrenfx :

OPENED는 OrderSendAsync에 대한 TRADE_RETCODE_PLACED의 결과입니다.

    원래 OrderSend 함수 를 사용할 때 TRADE_RETCODE_PLACED(10008)가 일반적으로 대기한다는 점에서 쓸모가 없다고 결론을 내릴 수 있습니까?

    도표를 위한 Gracias!

    "주문 조건이 충족됨"을 올바르게 번역하는 방법은 무엇입니까?

     
    Yedelkin :

    원래 OrderSend 함수 를 사용할 때 TRADE_RETCODE_PLACED(10008)가 일반적으로 대기한다는 점에서 쓸모가 없다고 결론을 내릴 수 있습니까?

    TRADE_RETCODE_PLACED는 순차적인 OrderSend와 관련이 없습니다.

    "주문 조건이 충족됨"을 올바르게 번역하는 방법은 무엇입니까?

    현재 가격은 연기 조건을 충족합니다. FILLED 대신 CANCELED가 발생할 수 있습니다. 예를 들어 연기 실행을 위한 여유가 충분하지 않은 경우입니다.

    다시 말하지만, 비동기식으로 작동하려면 강력한 이벤트 시스템 이 필요합니다. 도착 시 다음을 수신할 수 있습니다.

    • 이벤트 문자 메시지입니다.
    • 생성 시간입니다.
    • 어떤 순서에 속합니까?
    • 메시지 유형(뉴스, 주문, 연결 상태 등)

    플랫폼 자체의 아키텍처는 매우 깊이 생각해야 합니다. 여기서 건축 설계 단계에서 실수가 있다면 보편성을 얻기 위해 이를 우회하기가 극히 어렵다.

    IMessage (JForex API 2.9.6.1 API)
    • www.dukascopy.com
    FRAMES    NO FRAMES
     

    hrenfx :

    예델킨 :

    원래 OrderSend 함수 를 사용할 때 TRADE_RETCODE_PLACED(10008)가 일반적으로 대기한다는 점에서 쓸모가 없다고 결론을 내릴 수 있습니까?

    TRADE_RETCODE_PLACED는 순차적인 OrderSend와 관련이 없습니다.

    여기! 나는 직관적으로 반년 전에 여기에 왔고 당신은 그것을 확인했습니다 :) 이미 좋습니다 :)
     
    hrenfx :

    다시 말하지만, 비동기식으로 작동하려면 강력한 이벤트 시스템 이 필요합니다. 도착 시 다음을 수신할 수 있습니다.

    • 이벤트 문자 메시지입니다.
    • 생성 시간입니다.
    • 어떤 순서에 속합니까?
    • 메시지 유형(뉴스, 주문, 연결 상태 등)
    무엇보다도 OnTrade 이벤트를 자세히 설명해야 할 필요가 있다는 말씀이신가요?
     
    Yedelkin :
    여기! 나는 직관적으로 반년 전에 여기에 왔고 당신은 그것을 확인했습니다 :) 이미 좋습니다 :)
    누군가가 자신의 추론의 정확성을 확인하면 항상 기뻐합니다. 그것이 얼마나 사실인지에 관계없이.
     
    Rosh :
    누군가가 자신의 추론의 정확성을 확인하면 항상 기뻐합니다. 그것이 얼마나 사실인지에 관계없이.
    글쎄, Duc, 지난 8 개월 동안 아무도 사람의 공개 결론을 논박하지 않았습니다. 이론적으로나 테스트 결과에 의해서도 아닙니다. 그러나 의심을 심어 주셔서 감사합니다. :)
     

    다음과 같이 설명해야 합니다.

    OrderSend의 TRADE_RETCODE_PLACED 는 서버 응답입니다.

    OrderSendAsync에 대한 TRADE_RETCODE_PLACED는 터미널 응답입니다.

    코드는 같더라도 완전히 다른 의미를 갖습니다. 대부분의 경우 개발자는 이 모호성을 수정할 것입니다.

    따라서 이것을 이해하십시오.

    TRADE_RETCODE_PLACED к последовательной OrderSend не имеет никакого отношения.

    적절한 맥락에서 필요합니다.