
MetaTrader 5にポジション計算のヘッジシステムが追加されました
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つのスプレッドを節約することができます。
- 単一クローズの場合、トレーダーは2回スプレッドを払うことになります。より低い価格(Bid)で買いを閉じ、より高い価格(Ask)で売りを閉じます。
- 最初のポジションを閉じる為の相対クローズでは、2つ目のポジションのオープン価格を使用し、2つ目のポジションには最初のポジションのオープン価格が使用されます。
相対ポジションのクローズ時に、『close by』のタイプの注文が設定されます。閉じられるポジションのチケットが、コメントで指定されます。相対ポジションのペアのクローズは、『out by』タイプの2つの取引によって行われます。両方のポジションのクローズの結果によって得られる取引の利益/損失のサイズは、1つの取引でのみ指定されます。
ヘッジングポジション計算システムにおけるマージン計算の特徴
ヘッジングのポジション計算システム使用時のマージン計算は、ネッティングシステムと同じ式と原則で行われます。しかし、同じシンボルに幾つかのポジションがある場合、特徴があります。
同じ方向に開いたポジションや注文
ポジションの為にボリュームが合計され、加重平均オープン価格が算出されます。取得された値は、シンボルタイプに対応する式でのマージン計算に使われます。
指値注文には(マージン率がゼロの場合)マージンは別途計算されます。
異なる方向のポジション/注文
同じシンボルで様々な方向に開かれたポジションは、ヘッジまたはカバーとみなされます。このようなポジションの為には、2つのマージンの計算方法があります。計算方法はブローカーによって決定されます。
基本的計算 | より大きい方を使用 |
---|---|
契約明細の『ヘッジマージン』欄に『大きい方を使用した計算』の値が指定されていない場合に使用されます。 計算はいくつかのステップから成っています。
カバーされていないボリュームの計算
カバーされているボリュームの計算 契約明細に『ヘッジマージン』の値が書かれている場合に使用されます。この場合、カバーされたボリュームにも、カバーされていないボリュームにも、マージンが徴収されます。 最初のマージンがシンボルの為に指定されている場合、ヘッジマージンは絶対値(金額での)として指定されます。 最初のマージンが指定されていない場合(0と等しい)、『ヘッジ』欄には契約のサイズが指定されます。マージンの計算はシンボルタイプに沿った式に従って、指定された契約サイズを使用して行われます。例えば、1ロットのEURUSDの買いポジションと1ロットのEURUSDの売りポジションがあり、契約サイズは10万と等しいものがあるとします。『ヘッジ』欄に10万を指定する場合、2つのポジションに対してマージンは1ロットとして徴収されます。もし0とする場合は、カバーされるボリュームに対して、マージンは徴収されません。 ポジションのカバーされるロットごとに、マージンは契約明細の『ヘッジマージン』欄で指定された値に応じて徴収されます。
指値注文の計算
| 契約明細の『ヘッジマージン』欄に『大きい方を使用して計算』の値が指定されている場合に使用されます。
|
MQL5の変更
これからは、全てのポジションは、独自のチケットを持ちます。通常、これはポジションが開かれた注文のチケットと一致します。ターミナルの新しいバージョンへのアップデート後、以前に開かれたポジションには、チケットが自動的に割り当てられます。
MqlTradeRequest
MqlTradeRequest取引リクエスト構造体に、二つの新しいフィールドが追加されました。
- position — ポジションチケット。ポジションのクローズや変更時に、その明確な識別の為に埋める必要があります。通常、これはポジションが開かれた注文のチケットと一致します。
- position_by — 相対ポジションのチケット。同じシンボルで、かつ反対方向に開かれた相対ポジションのクローズ時に使用されます。
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つの同様のフィールドが追加されました。
- position — トランザクションによって影響を受けるポジションのチケット。市場注文の処理に関わるトランザクション(TRADE_TRANSACTION_ORDER_* ポジションチケットがまだ割り当てられていないTRADE_TRANSACTION_ORDER_ADD以外)と注文履歴(TRADE_TRANSACTION_HISTORY_*)の為に記入します。
- position_by — 相対ポジションのチケット。同じシンボルで、かつ反対方向に開かれた相対ポジションのクローズ時に使用されます。相対ポジションのクローズの注文(close by)と相対ポジションのクローズの為の取引(out by)の為のみに記入されます。
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はオープンポジションリスト内のインデックスによるポジションチケットを返し、PositionGetDouble、PositionGetInteger、PositionGetString関数を使用し、今後の作業の為に自動的にこの関数を選択します。
ulong PositionGetTicket( int index // ポジションリストの番号 );
PositionSelectByTicket
新しい関数PositionSelectByTicketは、指定されたチケットによって、今後の作業の為にオープンポジションを選択します。
bool PositionSelectByTicket( ulong ticket // ポジションチケット );
PositionSelect
PositionSelectは、PositionGetDouble、PositionGetInteger、PositionGetString関数を使って、今後の作業の為にシンボル名によってポジションを選択します。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によって、取引シンボルによるヘッジマージンサイズを取得することができます。ヘッジング計算システムにおけるマージン計算の特徴は、上記に記載されています。
新しい取引定数
新しい取引操作タイプ『相対ポジションのクローズ』の追加に関連して、新しい取引プロパティが登場しました。
- TRADE_ACTION_CLOSE_BY - 新しい取引操作タイプー相対するポジションのクローズ。
- ORDER_TYPE_CLOSE_BY - 新しい注文タイプー相対するポジションのクローズ。
- ORDER_POSITION_BY_ID - 新しい注文プロパティー現在のものを閉じる為に使用する相対ポジションのチケット。
- DEAL_ENTRY_OUT_BY - 新しい取引タイプー相対ポジションのクローズ。
ヘッジングとMQL5 Cloud Network - 追加ボーナス
これからは、MetaTrader 5を使うことで、株式市場や人気のリテールFXでヘッジングを使用した取引を行うことができます。また、ヘッジを使用する自動システムの開発者は、もう1つの重要な利点を獲得しました。これからは、マルチスレッドテスターだけでなく、分散ネットワークMQL5 Cloud Networkがあります。
お使いのプラットフォームを更新し、新しい機能をお試しください!
MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/2299




- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索