PositionSelect関数の役割・働き
PositionSelect関数は、特定のシンボルに基づいて取引ポジションを選択するために使用されます。
選択されたポジションの情報をコピーし、そのデータに基づいて、PositionGetDouble関数、PositionGetInteger関数、PositionGetString関数など後続の関数がポジションに関する詳細な情報を取得できるようになります。
従って、ポジションの最新情報を確実に取得するには、PositionSelect関数を事前に呼び出すことが推奨されます。
これにより、取引戦略を正確に実行するための正しいポジション情報が確保されます。
※PositionSelect関数とは別に、引数にポジション番号を記述する事によって、ポジション選択を行うPositionSelectByTicket関数という関数もあります。
PositionSelectByTicket関数は特定のポジションに対する操作や分析を行いたい時に便利なので、ヘッジングシステムで主に使われるのに対し、PositionSelect関数はある通貨ペアに関連するポジションの総合的な情報を得たい時や、そのポジションに対するアクションを取りたい時に使用します。主にネッティングシステムにおいて使用します。
PositionSelect関数の引数について
bool PositionSelect(
string symbol // 商品名
);
引数: symbol
– 引数には選択したいポジションのシンボル名を指定します。
PositionSelect関数の戻り値について
PositionSelect関数の戻り値はbool
型で、関数処理が成功した場合はtrue
、失敗した場合はfalse
を返します。
※処理が失敗した場合、GetLastError関数を使用してエラーの詳細を取得することが重要です。
PositionSelect関数を利用する際の注意点
注文とポジションの違い
大前提としてMetaTrader 5(MT5)には注文とポジションという概念がある点に注意が必要です。
・注文とは、取引を開始するためのリクエストです。これは、MQL5の公式リファレンスでの日本語訳では「未決注文(待機注文)」いう訳があてられており、実際に取引が行われる前の段階を指します。
・ポジションとは、実際に取引が行われた後の結果です。つまり、買いまたは売りの注文が実行された後に持つ取引のことを指します。
そしてPositionSelect関数はポジションに対して選択処理を行う関数であり、注文選択に関してはOrderSelect関数やOrderGetTicket関数などを用いる、という事を押さえておきましょう
※MetaTrader 5(MT5)の「ツールボックス」の「取引」タブで見られるのはポジションの情報なので、これを待機注文と混同しないようにしましょう。
ポジションのネッティング計算
- ネッティングとは、同じシンボルに対する複数の取引を一つのポジションに統合する計算方法です。ネッティングシステムにおいては、各シンボルにつき1つのポジションのみを保有することができます。
※ネッティングシステムについては↓の記事リンクをご参照ください
複数ポジションの保有(ヘッジングシステム)
- 一方で、ヘッジングシステムを使用している場合は、各シンボルに対して複数のポジションを同時に保有することが可能です。
※ヘッジングシステムについては↓の記事リンクをご参照ください
<参照>