거래 요청 결과 구조 (MqlTradeResult)
거래 서버는 거래 요청의 결과로 거래 요청 처리 결과에 대한 데이터를 MqlTradeResult type 유형의 특수 사전정의된 구조로 반환합니다.
struct MqlTradeResult
|
필드 설명
필드 |
설명 |
---|---|
retcode |
거래 서버의 반환 코드 |
딜 |
거래가 성사된 경우 티켓 거래. TRADE_ACTION_DEAL 유형의 거래 작업에 사용할 수 있습니다 |
주문 |
발주된 경우 티켓을 주문. TRADE_ACTION_PENDING 유형의 거래 작업에 사용할 수 있습니다 |
볼륨 |
브로커가 확인한 딜 볼륨. 주문 채우기 유형에 따라 다릅니다 |
가격 |
|
입찰 |
현재 시장 입찰 가격 (재산정 가격) |
요구 |
현재 시장 호가 (재산정 가격) |
코멘트 |
작업에 대한 브로커 설명 (기본적으로 거래 서버 반환 코드에 대한 설명으로 채워짐) |
request_id |
거래 서버로 보낼 때 터미널에서 설정한 요청 ID |
retcode_external |
외부 거래 시스템에서 반환한 오류 코드. 이러한 오류의 용도 및 유형은 거래 작업이 전송되는 브로커 및 외부 거래 시스템에 따라 달라집니다. |
거래 작업 결과가 MqlTradeResult 유형의 변수로 반환되며, 이 변수는 OrderSend()에 두 번째 매개변수로 거래 작업을 수행하기 위해 전달됩니다.
터미널은 요청 ID를 거래 서버로 전송할 때 OrdersSend() 및 OrderSendAsync() 함수를 사용하여 request_id 필드에서 수정합니다. 터미널은 거래 서버로부터 수행된 거래에 대한 메시지를 수신하고 다음 구성 요소를 매개 변수로 포함하는 OnTradeTransaction() 함수로 처리할 수 있도록 제출합니다:
- MqlTradeTransaction 구조의 거래 설명;
- OrderSend() 또는 OrdersSendAsync() 기능에서 보낸 거래 요청에 대한 설명입니다. 요청 ID 터미널에서 거래 서버로 전송되고 요청 자체와 해당 request_id는 터미널 메모리에 저장됩니다;
- 이 요청의 ID가 포함된 request_id 필드가 있는 MqlTradeResult 구조로 된 거래 요청 실행 결과 있니다.
OnTradeTransaction() 함수는 3개의 입력 매개변수를 수신하지만 마지막 2개는 TRADE_TRANSACTION_REQUEST 유형의 트랜잭션에 대해서만 분석해야 합니다. 그 밖의 모든 경우에는 거래 요청 자료와 그 실행 결과에 대한 자료가 채워지지 않습니다. 매개변수 분석 예는 거래 요청 구조에서 확인할 수 있습니다.
거래 요청을 서버로 보낼 때 단말기가 request_id를 설정하는 것은 주로 OrderSendAsync() 비동기 함수로 작업할 때 도입됩니다. 이 지표를 사용하면 수행된 작업(OrderSend 또는 OrderSendAsync 함수 호출)을 OnTradeTransaction()으로 전송된 이 작업의 결과와 연결할 수 있습니다.
예:
//+------------------------------------------------------------------+
|