取引トランザクションの種類
取引口座にいくつかの明確なアクションを実行すると、状態が変更されます。アクションの例は下記です。
- クライアント端末内の任意の MQL5 アプリケーションから OrderSend と OrderSendAsync 関数を使用して取引リクエストを送信し、取引が実行される。
- 端末のグラフィカルインターフェースを使用して取引リクエストを送信し、取引が実行される。
- サーバ上で未決注文と逆指値注文が執行される。
- 取引サーバ側で操作を行う。
これらのアクションの結果として以下の取引トランザクションが実行されます。
- 取引リクエストの処理
- 未執行注文の変更
- 注文履歴の変更
- 約定履歴の変更
- ポジションの変更
例えば、市場の買い注文を送信する際に、注文が処理され、買い注文が口座に記録されます。その後注文が実行されオープン注文の表から削除されて注文履歴に追加されます。約定履歴に追加され新しいポジションが作成されます。これらのアクションは全て取引トランザクションです。
プログラマによる取引口座に関連して実行されるアクション追跡が可能なように OnTradeTransaction 関数が提供されています。このハンドラは MQL5 アプリケーションの口座に適用される取引トランザクションを取得することが出来ます。取引トランザクションの記述は MqlTradeTransaction 構造体を使用して OnTradeTransaction の1 番目のパラメータとして渡されます。
取引トランザクションの種類は MqlTradeTransaction 構造体型のパラメータで提出されます。取引トランザクションの種類は、以下の列挙に記載されています。
ENUM_TRADE_TRANSACTION_TYPE
識別子 |
説明 |
---|---|
TRADE_TRANSACTION_ORDER_ADD |
新規の未執行注文の追加。 |
TRADE_TRANSACTION_ORDER_UPDATE |
未執行注文の更新。アップデートは、クライアント端末や取引サーバ側からの明らかな変更だけでなく、設定時の注文状態の変化を含みます(例えば ORDER_STATE_STARTED から ORDER_STATE_PLACED へや ORDER_STATE_PLACED から ORDER_STATE_PARTIALへの変化など)。 |
TRADE_TRANSACTION_ORDER_DELETE |
注文の未処理注文リストからの削除。注文は、適切なリクエストの設定または実行(充填)後、履歴に移動された結果として、未処理の注文のリストから削除することが出来ます。 |
TRADE_TRANSACTION_DEAL_ADD |
約定を履歴に追加。このアクションは注文実行や口座残高の操作の結果として実行されます。 |
TRADE_TRANSACTION_DEAL_UPDATE |
約定を履歴での更新。以前に実行された約定がサーバで更新される場合があります。例えば、 約定が以前にブローカによって転送された外部の取引システム(exchange)で更新される場合です。 |
TRADE_TRANSACTION_DEAL_DELETE |
約定履歴の削除。以前に実行された 約定がサーバから削除される場合があります。例えば、 約定が以前にブローカによって転送された外部の取引システム(exchange)で削除されている場合です。 |
TRADE_TRANSACTION_HISTORY_ADD |
実行またはキャンセルの結果として履歴に注文を追加します。 |
TRADE_TRANSACTION_HISTORY_UPDATE |
注文履歴内の注文を変更します。この型は、取引サーバ側の機能性を高めるために設けられています。 |
TRADE_TRANSACTION_HISTORY_DELETE |
注文を履歴から削除します。この型は、取引サーバ側の機能性を高めるために設けられています。 |
TRADE_TRANSACTION_POSITION |
取引の実行に関連していないポジションを変更します。このトランザクション型はポジションが取引サーバ側で変更されたことを示しています。ポジションボリューム、始値、決済逆指及び決済指レベルの変更が可能です。返られたデータは OnTradeTransaction ハンドラでMqlTradeTransaction 構造体に提示されます。 約定実行によるポジションの変化(追加、変更、閉鎖)は TRADE_TRANSACTION_POSITION トランザクションの発生にはつながりません。 |
TRADE_TRANSACTION_REQUEST |
取引リクエストがサーバと処理され結果が受け取られたことの通知。そのような取引では MqlTradeTransaction 構造体の type フィールド (取引タイプ) の分析のみが必要です。OnTradeTransaction 関数の 2、3 番目のパラメータ(request と result)は追加のデータを得るために分析されなければいけません。 |
取引トランザクションの種類によって、各種パラメータが MqlTradeTransaction 構造体に書き入れられます。引き渡されたデータの詳細な説明は「取引トランザクション構造体」でご覧下さい。
参照