取引リクエスト結果の構造体 (MqlTradeResult)
取引リクエストの結果として、取引サーバは MqlTradeResult 型の特殊な事前定義された構造と取引リクエストの処理結果のデータを返します。
struct MqlTradeResult
|
フィールドの説明
フィールド |
説明 |
---|---|
retcode |
取引サーバのリターンコード。 |
deal |
約定チケット(注文がなされた場合)。TRADE_ACTION_DEAL 型の取引操作で使用可能です。 |
order |
注文チケット(注文された場合)。TRADE_ACTION_PENDING 型の取引操作で使用可能です。 |
volume |
ブローカーによって確認された 約定ボリューム。注文充填タイプによって変化します。 |
price |
|
bid |
現在のマーケット売値(リクオート価格)。 |
ask |
現在のマーケット買値 (リクオート価格)。 |
comment |
操作に対するブローカーコメント(デフォルトは取引サーバの返したコードの記述)。 |
request_id |
取引サーバへの送信時に端末によって設定されたリクエストID。 |
retcode_external |
外部取引システムが返したエラーコード。これらのエラーの種類と使用は取引操作が送信される外部取引システムとブローカーに依存します。 |
取引操作の結果は取引操作を実行するためにOrderSend()に 2 番目のパラメータとして渡される MqlTradeResult type の変数に返されます。
端末は OrdersSend() または OrderSendAsync()関数を使用しての取引サーバへの送信時に request_id フィールドのリクエスト ID を変更します。端末は、取引サーバから実行されるトランザクションに関するメッセージを受信しOnTradeTransaction()関数による処理のためにパラメータとして以下の成分を含んで提出します。
- MqlTradeTransaction 構造体内での取引トランザクションの記述。
- OrderSend() または OrdersSendAsync() 関数から送信された取引リクエストの記述 。リクエスト ID は端末によって取引サーバに送信され、リクエストとその request_id は端末メモリに保存されます。
- 取引リクエストの実行結果は、リクエストのIDを request_id フィールドに含む MqlTradeResult 構造になります。
OnTradeTransaction() 関数は、3 つの入力パラメータを受信しますが、最後の 2 つは TRADE_TRANSACTION_REQUEST 型のトランザクションのみで分析されるべきです。他の全ての場合では、取引リクエストとその実行結果のデータは満たされません。パラメータ分析の例は取引リクエスト構造体をご参照ください。
サーバ送信時の端末による request_id の設定は主に OrderSendAsync() 非同期関数を操作するために導入されました。この識別子は、アクション(OrderSend または OrderSendAsync 関数の呼び出し)と OnTradeTransaction()に送信されたアクションの結果を関連付けます。
例:
//+------------------------------------------------------------------+
|