MQL5

【MQL5】オーダー・ディール・ポジションの厳密な分類とは?

MQL4 でいうところの「オーダー」は、MQL5 ・MT5 では「オーダー (orders)」「ディール (deals)」「ポジション (positions)」に分けられます。

「これらの違いがよくわからない」、「識別子が ticket 番号 と position ID の2つあって違いがしっかりと理解できない」などと感じている人も多いのではないでしょうか?

この記事では、

(1) 「オーダー (orders)」「ディール (deals)」「ポジション (positions)」明確な違い

(2)  Order から Position, Deal ができる際の一連の流れ

(3)  各 order, position, deal に 付与される ticket 番号PositionID役割と、これらが推移していく全体像

 

をわかりやすく説明しています。

なお、order, position, deal に関する情報を取得したい場合は非常に複雑
実に 28個もあるトレード系の関数の中から適切な組み合わせを選び、適切な順番で使う」必要があります。

下記の記事にて「order, position, deal  の情報取得の際の全体像」を非常にわかりやすく解説したので、併せてご覧ください。

⇒ [MQL5] 28個のトレード系関数の使い方を一気に解説!

1.オーダー・ディール・ポジションの違い・定義

公式サイトの「日本語ページ」を見ると、「オーダー=注文」「ディール=約定」などと非常に不自然に翻訳されてますがさすがにこれだとちょっとわかりにくいので、
‘Order, Deal, Position’ とそのままの名前で解説します。

Order から Position, Deal ができる一連の流れを表した図

MT5でポジションを持ちたいと思って OrderSend() で取引リクエストを出した後、Order が Position , Deal となっていく一連の流れは次の通りです。

MQL5において Order から Position, Deal ができる一連の流れ

流れを簡単に説明します。

1)      ポジションを持ちたいと思ったとき、「自分のMT5ターミナルからサーバーに」取引リクエストを送ります。この”リクエスト”Order と呼びます。

2)      リクエストが受理され、条件をみたして約定すると、実際に “Position” を持つことになります。(現在保有中のポジション)

同時に、これに伴って「どの価格で約定したのか」という情報が “Deal”「記録」として残されます。ロット数が大きい場合には分割して約定されます。この場合、約定した価格は複数存在するのでそれぞれの価格ごとに “複数のDeals” が記録として残ります。

この場合、MT5のターミナルの履歴にも “IN” と表示されるので「市場に入った」ことがわかるようになっています。(これは Deal の ENUM_DEAL_ENTRY プロパティが ‘DEAL_ENTRY_IN’ であることと同義です。)

3)     ポジションを決済(エグジット)したい場合は、再度 Order を送ります。

4)     条件を満たされると、(現在保有中の)Position は決済され、Position を保有していない状態になります。

同時に「どの価格で決済されたのか」という情報が “Deal”「記録」として残されます。
エントリー時と同様、分割して約定された場合、 “複数のDeals” が記録として残ります。

2.各 Order, Deal, Position に固有の 「ticket 番号」と「PositionID(ポジションID)」とは?

MT5 では 各Order, Deal, Position を管理するためにそれぞれに2種類の固有の番号が振り分けられます。

「ticket number・チケット番号」「ポジションID」です。

Order, Deal, Position それぞれが自分の ticket number と position ID を持ちます。したがって Order Ticket number / Deal Ticket number / Position ticket number および Order Position ID / Deal Position ID / Position ID などと呼び分けられます。

チケット番号とポジションIDの違い

チケット番号(ticket number)は「各 Order, Deal, Position を識別するための番号」であるのに対して、

ポジションID は(市場に入ってから出るまでの)「一連Order, Position, Deal を結び付けるためのもの」です。

ポジションIDは関連する Order, Deal, Position において同じ番号をもつ

ポジションIDは市場に入ってから出るまでの「一連の取引に関連する order, position, deal を結び付けるもの」であるので、同じ取引の場合、すべて同じ値を持ちます

これは(基本的には)エントリ- 時の Order の order ticket number がそのままポジションIDとして引き継がれます

3.【まとめ】関連する Order, Deal, Position の ticket 番号とPositionID(ポジションID)の推移図

市場に入ってから出るまでの一連の取引の中で、ticket number と position ID がどのように振り与えられるかを図にしました。

      の 下に書かれている ‘ticket number’ と ‘Position ID’ がどのように変化していくかに注目してください。

チケット番号の推移

エントリーの際の Order のチケット番号が ‘4311‘ だとした場合、

4311 “が他にどこで使われているか注目してください。図の中に 4311 ” は何度も出てくるのがわかります。

各 order, deal, position にて ‘position ID’ として引き継がれて使われているのがわかると思います。また position の ticket 番号も(例外を除いて) 4311 が引き継がれます。

最後に

本記事では MQL5 の「オーダー」「ディール」「ポジション」の違いと、推移していく際の全体像を図なども用いてわかりやすく解説しました。

これらの違いを理解することは、「オーダー」「ディール」「ポジション」に関する情報を取得する上で不可欠です。

order, position, deal の情報の取得に関しては非常に複雑で、
実に 28個もある関数の中から適切な関数の組み合わせを選び、適切な順番で使う」必要があります。

下記の記事にて「情報取得の際の全体像」を非常にわかりやすく解説したので、併せてご覧ください。

⇒ [MQL5] 28個のトレード系関数の使い方を一気に解説!

 

なお下記の記事ではMQL4 から MQL5 に移行する際の全体像」を網羅的に解説しています。
具体的にどういった内容をどういった順番で学習していけばよいか知りたい方はご覧ください。

⇒ MQL4(MT4) → MQL5(MT5) に移行する際に勉強すべき内容まとめ!

   

コメントを残す

*

CAPTCHA