- OrderCalcMargin
- OrderCalcProfit
- OrderCheck
- OrderSend
- OrderSendAsync
- PositionsTotal
- PositionGetSymbol
- PositionSelect
- PositionSelectByTicket
- PositionGetDouble
- PositionGetInteger
- PositionGetString
- PositionGetTicket
- OrdersTotal
- OrderGetTicket
- OrderSelect
- OrderGetDouble
- OrderGetInteger
- OrderGetString
- HistorySelect
- HistorySelectByPosition
- HistoryOrderSelect
- HistoryOrdersTotal
- HistoryOrderGetTicket
- HistoryOrderGetDouble
- HistoryOrderGetInteger
- HistoryOrderGetString
- HistoryDealSelect
- HistoryDealsTotal
- HistoryDealGetTicket
- HistoryDealGetDouble
- HistoryDealGetInteger
- HistoryDealGetString
OrderSend
OrderSend() 関数は取引操作の実行に使用され、リクエストを取引サーバに送信します。
bool OrderSend(
|
パラメータ
request
[in] クライエントの取引アクティビティを記述する MqlTradeRequest 型の構造体へのポインタ
result
[in,out] 成功した場合(true が返される場合)取引操作の結果を表す MqlTradeResult 型の構造体へのポインタ
戻り値
基本的な構造体チェック(ポインタチェック)が成功した場合、trueが戻されます。しかし、これは取引操作が成功することを表すものではありません。 関数実行結果の詳細には、result 構造体のフィールドが分析されるべきです。
注意事項
取引リクエストは、サーバ上で複数の段階を踏みます。初めに、request パラメータの必須のフィールドが正しく書き入れられているかどうかがチェックされます。エラーがない場合、サーバは、更なる処理のために注文を受け付けます。注文が正常に取引サーバによって受け入れられると、OrderSend() 関数が true を返します。
取引サーバに送信する前に、リクエストをチェックすることが推奨されます。リクエストをチェックするには OrderCheck() 関数が使用されます。それは、取引を実行するための充分な資金があるかをチェックし、複数の役立つパラメータを 取引リクエストチェックの結果に返します。
- チェックされたリクエストに含まれるエラーの情報を含むリターンコード
- 取引操作が実行された後に表示される残高値
- 取引操作が実行された後に表示される株式価値
- 取引操作が実行された後に表示される浮動小数点値
- 取引操作に必要な証拠金
- 取引操作が実行された後に残る自由資本の金額
- 取引操作が実行された後に設定される証拠金レベル
- 返信コードコメント(エラーの説明)
成行注文を送信する場合 (MqlTradeRequest.action=TRADE_ACTION_DEAL)、OrderSend() 関数の正常結果は、注文が実行されたことを意味しません。この場合、'true"によって意味されるのは、注文がその後の実行のために取引システムに正常に配置されたことだけです。トレードサーバーは、OrderSend()への応答を形成する場合にデータがある場合、返された結果構造体のdealまたはorderフィールド値に書き入れます。一般に、注文に対応する取引を実行するイベントは、OrderSend() 呼び出しに対する応答を送信した後に発生する可能性があります。したがって、いずれの取引リクエストに対しても、OrderSend()の実行結果を受け取ったときには、まず、結果構造体のretcode t取引サーバリレスポンスコードとretcode_external外部システムレスポンスコードを初めに確認するべきです。
受け入れられた注文は、実行に必要な条件の 1 つが準備出来るまで処理を待って取引サーバに格納されます。
- 期限切れ
- 反方向のリクエストの出現
- 指定された実行価格が出現した場合の注文の実行
- 注文を取り消すリクエストの受信
注文処理時に、取引サーバは端末に取引イベント発生についてのメッセージを送り、これは OnTrade() 関数で処理出来ます。
サーバ上で OrderSend() 関数で送られたリクエストを実行した結果は OnTradeTransaction ハンドラで追跡出来ます。1 つの取引リクエストを実行する際に OnTradeTransaction ハンドラは複数回呼ばれることには留意されるべきです。
例えば、市場の買い注文を送信する際に、注文が処理され、買い注文が口座に記録されます。その後注文が実行されオープン注文の表から削除されて注文履歴に追加されます。約定履歴に追加され新しいポジションが作成されます。OnTradeTransaction 関数はこれらのイベント全部に呼び出されます。
例:
//--- ORDER_MAGIC の値
|
参照