MetaTrader 5にポジション計算のヘッジシステムが追加されました

MetaQuotes | 22 3月, 2016

MetaTrader 5プラットフォームは、元々ネッティングのポジション計算を使用した取引の為に設計されています。ネッティングの計算では、一つのシンボルにつき一つのポジションしか持つことができない為、そのシンボルにおける全てのその後の操作は、ボリュームの変更や既存のポジションの反転またはクローズをもたらします。リテールFXトレーダーの可能性を拡大する為に、プラットフォームに2つ目の計算システムであるヘッジングが追加されました。これからは、シンボルごとに、反対方向のものを含む、多数のポジションを持つことができます。これによって、いわゆる『ロック』を使った取引戦略を実装することができ、つまり、もし価格がトレーダーに反する方向へ向かった場合、反対方向にポジションを開くことができます。

新しい計算システムは、MetaTrader 4で使用されているものと同様なので、トレーダーに馴染みのあるものです。また、トレーダーは、複数の取引の実行(部分的なものも含む)や、MQL5 Cloud Networkのサポートを持つ多通貨・マルチスレッドテスターなど、第五世代プラットフォームの全ての長所を使用することができます。

これからは、一つのシンボルにつき一つのポジションしか持つことができない、ネッティングを使用しているアカウントと同じアカウントで、株式取引を行うことができます。また、同じプラットフォームの他のアカウントで、FX取引やヘッジングを使用することもできます。

この記事では、ネッティングやヘッジングについて、また第2の計算システムの導入に関する変更について詳しく説明をしていきます。


ポジションの計算は、取引アカウントに依存します

ポジション計算のタイプはアカウントレベルで設定され、これはターミナルウィンドウのヘッダやログに表示されます。

現在のアカウントにおけるポジション計算システム

ヘッジングのデモアカウントを開設する為には、対応するオプションを有効にしてください。

ヘッジングのデモアカウントを開設しましょう

ヘッジングを伴う実際アカウントの開設については、あなたのブローカーにお問い合わせください。


ネッティングシステム

この計算システムは、アカウント上では一度に1つのシンボルにつき1つのポジションのみ開くことができるということを念頭に置いています。

この時、どのようなアクションの結果、反対方向に取引が行われるかや、市場の注文や指値注文の実行の結果は重要ではありません。

以下に、0.5ロットのボリュームでのEURUSDの二つの買い取引の実行例を引用しました。

ネッティングポジション計算システム

これらの取引の実行結果は、1ロットのボリュームの1つの共通ポジションになりました。


ヘッジングシステム

この計算システムはアカウントに、同じシンボルに対し反対方向のものを含む、複数の取引ポジションを持つことを可能にします。

取引シンボルに開いているポジションがあり、トレーダーが新しい取引を実行する(または指値注文が作動する)場合、新しいポジションが開かれます。既存のポジションは変化しません。

以下に、0.5ロットのボリュームでのEURUSDの二つの買い取引の実行例を引用しました。

ヘッジングポジション計算システム

これらの取引が実行された結果、2つの別個のポジションが開かれました。


計算システムの影響

アカウント上のポジション計算システムによって、プラットフォームの幾つかの取引機能は異なる動作をします。


新しい取引操作ーClose By

ヘッジングポジション計算のアカウントの為に、反対のポジションを閉じる新しいタイプの取引操作が追加されました。この操作によって、同じシンボルでの反対方向の2つのポジションを同時に閉じることができます。もし相対するポジションが様々なロット数を持っている場合、2つのうちの1つの注文のみが開いたまま残ります。このボリュームは、2つのクローズポジションのロット差と等しくなり、ポジションの方向とオープン価格は、クローズポジションのうちの(ボリューム的に)大きい方と等しくなります。

2つのポジションの単一のクローズと比較すると、相対クローズでは、トレーダーは2つのスプレッドを節約することができます。

相対ポジションのクローズ

相対ポジションのクローズ時に、『close by』のタイプの注文が設定されます。閉じられるポジションのチケットが、コメントで指定されます。相対ポジションのペアのクローズは、『out by』タイプの2つの取引によって行われます。両方のポジションのクローズの結果によって得られる取引の利益/損失のサイズは、1つの取引でのみ指定されます。

アカウント履歴内の相対ポジションのクローズ操作


ヘッジングポジション計算システムにおけるマージン計算の特徴

ヘッジングのポジション計算システム使用時のマージン計算は、ネッティングシステムと同じ式と原則で行われます。しかし、同じシンボルに幾つかのポジションがある場合、特徴があります。

同じ方向に開いたポジションや注文

ポジションの為にボリュームが合計され、加重平均オープン価格が算出されます。取得された値は、シンボルタイプに対応する式でのマージン計算に使われます。

指値注文には(マージン率がゼロの場合)マージンは別途計算されます。

異なる方向のポジション/注文

同じシンボルで様々な方向に開かれたポジションは、ヘッジまたはカバーとみなされます。このようなポジションの為には、2つのマージンの計算方法があります。計算方法はブローカーによって決定されます。

契約明細でのヘッジマージン計算の設定


基本的計算
より大きい方を使用
契約明細の『ヘッジマージン』欄に『大きい方を使用した計算』の値が指定されていない場合に使用されます。

計算はいくつかのステップから成っています。
  • カバーされていないボリューム用
  • カバーされているボリューム用(ヘッジマージンのサイズが指定されている場合)
  • 指値注文用
これらのステップ毎に計算されたマージンの和として最終的なサイズが計算されます。

カバーされていないボリュームの計算
  • 両方向(買いと売り)の全てのポジションと注文の総量を計算します。
  • それぞれの側にポジションと注文の加重平均オープン価格が計算されます。(ポジション、または注文のオープン価格1×ポジション、または注文のボリューム1+...+ポジション、または注文のオープン価格N×ポジション、または注文のボリュームN)/(ポジション、または注文のボリューム1+...+ポジション、または注文のボリュームN)
  • カバーされていないボリュームが計算されます。(大きい方のボリュームから小さい方のボリュームが引かれます)
  • 計算されたボリュームと加重平均価格を使い、シンボルタイプに合った式でマージンの計算が行われます。
  • マージン比率やマージン通貨の証拠金通貨への変換を考慮した場合、比率とレートの加重平均値が使用されます。

カバーされているボリュームの計算
契約明細に『ヘッジマージン』の値が書かれている場合に使用されます。この場合、カバーされたボリュームにも、カバーされていないボリュームにも、マージンが徴収されます。

最初のマージンがシンボルの為に指定されている場合、ヘッジマージンは絶対値(金額での)として指定されます。

最初のマージンが指定されていない場合(0と等しい)、『ヘッジ』欄には契約のサイズが指定されます。マージンの計算はシンボルタイプに沿った式に従って、指定された契約サイズを使用して行われます。例えば、1ロットのEURUSDの買いポジションと1ロットのEURUSDの売りポジションがあり、契約サイズは10万と等しいものがあるとします。『ヘッジ』欄に10万を指定する場合、2つのポジションに対してマージンは1ロットとして徴収されます。もし0とする場合は、カバーされるボリュームに対して、マージンは徴収されません。

ポジションのカバーされるロットごとに、マージンは契約明細の『ヘッジマージン』欄で指定された値に応じて徴収されます。
  • 全ての開いているポジションや注文のカバーされているボリュームが計算されます。(大きい方のボリュームからカバーされていないボリュームが差し引かれます)
  • ポジションと注文の加重平均オープン価格が計算されます。(ポジション、または注文のオープン価格1×ポジション、または注文のボリューム1+...+ポジション、または注文のオープン価格N×ポジション、または注文のボリュームN)/(ポジション、または注文のボリューム1+...+ポジション、または注文のボリュームN)
  • 計算されたボリュームと平均価格、そしてヘッジマージンのサイズを使い、シンボルタイプに合った式でマージンの計算が行われます。
  • マージン比率やマージン通貨の証拠金通貨への変換を考慮した場合、比率とレートの加重平均値が使用されます。

指値注文の計算
  • 各指値注文のタイプごとにマージンが計算されます。(買い指値、売り指値など)
  • マージン比率やマージン通貨の証拠金通貨への変換を考慮した場合、指値注文のタイプごとの比率とレートの加重平均値が使用されます。
契約明細の『ヘッジマージン』欄に『大きい方を使用して計算』の値が指定されている場合に使用されます。
  • 全ての開いているポジションと注文で短い方や長い方のマージンの計算が行われます。
  • 各指値注文のタイプごとにマージンが計算されます。(買い指値、売り指値など)
  • 長い方のマージンの合計:ロングポジションと注文+買い指値。
  • 短い方のマージン計算:ショートポジションと注文+売り指値。
  • 最終的なマージンサイズとして、計算された値のうち、最も大きいものが使用されます。


MQL5の変更

これからは、全てのポジションは、独自のチケットを持ちます。通常、これはポジションが開かれた注文のチケットと一致します。ターミナルの新しいバージョンへのアップデート後、以前に開かれたポジションには、チケットが自動的に割り当てられます。

ヘッジシステム内でのポジションのクローズや変更の際には、必ずそのチケットを指定してください。(MqlTradeRequest::ticket)ネッティングシステム内のチケットも同様に指定することができますが、ポジションの識別はシンボルの名前で行われます。


MqlTradeRequest

MqlTradeRequest取引リクエスト構造体に、二つの新しいフィールドが追加されました。

struct MqlTradeRequest
  {
   ENUM_TRADE_REQUEST_ACTIONS    action;           // 実行されるアクションタイプ
   ulong                         magic;            // エキスパートアドバイザのマジックナンバー (識別子 magic number)
   ulong                         order;            // 注文のチケット
   string                        symbol;           // シンボル名
   double                        volume;           // ロット内の要求される取引量
   double                        price;            // 価格 
   double                        stoplimit;        // Stop Limitレベル
   double                        sl;               // Stop Lossレベル
   double                        tp;               // Take Profitレベル
   ulong                         deviation;        // 要求される価格からの最大許容偏差
   ENUM_ORDER_TYPE               type;             // 注文タイプ
   ENUM_ORDER_TYPE_FILLING       type_filling;     // 実行による注文タイプ
   ENUM_ORDER_TYPE_TIME          type_time;        // アクション時間による注文タイプ 
   datetime                      expiration;       // 注文の有効期限(ORDER_TIME_SPECIFIEDタイプの注文の為の)
   string                        comment;          // 注文へのコメント
   ulong                         position;         // ポジションチケット
   ulong                         position_by;      // 相対ポジションのチケット
  };

MqlTradeTransaction

取引トランザクションの構造体MqlTradeTransactionに、2つの同様のフィールドが追加されました。

struct MqlTradeTransaction
  {
   ulong                         deal;             // 取引のチケット
   ulong                         order;            // 注文のチケット
   string                        symbol;           // シンボル名
   ENUM_TRADE_TRANSACTION_TYPE   type;             // 取引トランザクションのタイプ
   ENUM_ORDER_TYPE               order_type;       // 注文タイプ
   ENUM_ORDER_STATE              order_state;      // 注文の状態
   ENUM_DEAL_TYPE                deal_type;        // 取引タイプ
   ENUM_ORDER_TYPE_TIME          time_type;        // アクション時間による注文タイプ
   datetime                      time_expiration;  // 注文の有効期限
   double                        price;            // 価格 
   double                        price_trigger;    // ストップリミットが作動する価格
   double                        price_sl;         // Stop Lossレベル
   double                        price_tp;         // Take Profitレベル
   double                        volume;           // ロット内のボリューム
   ulong                         position;         // ポジションチケット
   ulong                         position_by;      // 相対ポジションのチケット
  };


PositionGetTicket

新しい関数PositionGetTicketはオープンポジションリスト内のインデックスによるポジションチケットを返し、PositionGetDoublePositionGetIntegerPositionGetString関数を使用し、今後の作業の為に自動的にこの関数を選択します。

ulong  PositionGetTicket(
   int  index      // ポジションリストの番号
   );


PositionSelectByTicket

新しい関数PositionSelectByTicketは、指定されたチケットによって、今後の作業の為にオープンポジションを選択します。

bool  PositionSelectByTicket(
   ulong   ticket     // ポジションチケット
   );


PositionSelect

PositionSelectは、PositionGetDoublePositionGetIntegerPositionGetString関数を使って、今後の作業の為にシンボル名によってポジションを選択します。1つのシンボルに対し複数のポジションが存在し得るヘッジシステムでは、関数は最も小さいチケットを持つポジションを選択します。


ACCOUNT_MARGIN_MODE

新しいプロパティACCOUNT_MARGIN_MODEによって、マージン計算とアカウント上のポジション計算のモードを取得することができます。

識別子
説明
ACCOUNT_MARGIN_MODE_RETAIL_NETTING
ネッティングモード(1つのシンボルに対し、1つのポジションのみ)におけるポジション計算時に市場外市場の為に使用されます。シンボルタイプをベースにマージンが計算されます。(SYMBOL_TRADE_CALC_MODE)
ACCOUNT_MARGIN_MODE_EXCHANGE
これは株式市場の為に使用されます。シンボル設定で指定された割引に基づいてマージンが計算されます。割引はブローカーによって設定されますが、取引所によって決められた値よりも低くなることはありません。
ACCOUNT_MARGIN_MODE_RETAIL_HEDGING
独立したポジション計算(『ヘッジング』は1つのシンボルに対し、複数のポジションを有することができる)の際、市場外取引の為に使用されます。マージンの計算は、シンボルタイプと(SYMBOL_TRADE_CALC_MODE)、1つのシンボルに対して複数のポジションがあるかを考慮され行われます。


SYMBOL_MARGIN_HEDGED

新しいプロパティSYMBOL_MARGIN_HEDGEDによって、取引シンボルによるヘッジマージンサイズを取得することができます。ヘッジング計算システムにおけるマージン計算の特徴は、上記に記載されています。


新しい取引定数

新しい取引操作タイプ『相対ポジションのクローズ』の追加に関連して、新しい取引プロパティが登場しました。


ヘッジングとMQL5 Cloud Network - 追加ボーナス

これからは、MetaTrader 5を使うことで、株式市場や人気のリテールFXでヘッジングを使用した取引を行うことができます。また、ヘッジを使用する自動システムの開発者は、もう1つの重要な利点を獲得しました。これからは、マルチスレッドテスターだけでなく、分散ネットワークMQL5 Cloud Networkがあります。

お使いのプラットフォームを更新し、新しい機能をお試しください!