【超入門】MQL5 EA講座 第58回「成行注文と執行方式について」【EAの作り方】

MQL5でEA作ろう講座

前回ネッティングとヘッジング について解説しました。

改めて前回の内容をおさらいをしておくと、

  • ネッティングシステムは、1つの取引銘柄にたいして1ポジションしか保有することができまない(両建てができない)。
  • ネッティングシステムにおいて、同方向に追加オーダーを出したとき、最初のポジションと統合されてロットは、最初のロット数と追加オーダーのロット数が合計される。取得価格も最初のポジションと追加オーダーの価格を平均した価格に修正される。
  • ヘッジングシステムは、1つの銘柄に対し、複数のポジションを保有することができるシステムである。両建ても可能なことが多い。
  • MT5の口座タイプがネッティングシステムヘッジングシステムかを確認するには、MT5のタイトルバー部分に書いてある記述で確認するか、AccountInfoInteger関数を使って確認する。

ということをお伝えしました。

今回は 成行注文 についてお話ししたいと思います。

成行注文自体は、プログラムというより投資全般に通じる事柄ですが、ここをしっかり押さえておかないとEA(自動売買プログラム)は作れません。まずは手動取引で、成行注文の仕組みを改めて見ていきましょう。

スポンサーリンク
スポンサーリンク

成行注文とは?

成行注文とは、

マーケットの現在値で、該当銘柄をトレードする事をブローカーに伝える要求

のことです。

オーダー種類には、Buy(買い) と Sell(売り) があります。

Buy(買い)オーダーは、現在値におけるAsk値でポジションを持ちます。

Sell(売り)オーダーは、現在値におけるBid値でポジションを持ちます

AskとBidはMT5の気配値表示などで確認することができます。↓

成行決済

成行決済とは、

マーケットの現在値で、該当銘柄を決済する事をブローカーに伝える要求

のことです。

Buy(買い)ポジションの成行決済は、Bid値で行われます。

Sell(売り)ポジションの成行決済は、Ask値で行われます。

成行注文の執行方式(execution type)

MT5口座においては、成行注文が実行される際、その実行プロセスを決める4つの執行方式(execution type)があります。

執行方式???なんのこと?((+_+))」と思われる方もいるかもしれませんね。

執行方式とは、ざっくり行ってしまえば

成行注文が実行される際の、細かい仕組みの違いです。

裁量取引の時は、成行注文はただ決められたMT5の操作をすればいいだけなので、執行方式云々をあまり気にする必要はないのですが、MQL5EA(自動売買プログラム)を作る場合には、執行方式の事はある程度理解しておく必要があるでしょう。

4つの執行方式の内訳は

となっています。

どの執行方式を採用しているかは、ブローカーによって異なります。

MT5成行注文執行方式については、↓のサイト投資で実現!不労所得生活さんがhttps://memoja.net/p/2roz7fo/

↑で、素晴らしいまとめ記事を書かれています。

この記事とフィルポリシーについては是非読まれることをお勧めします

では順を追って、執行方式の特徴を見ていきましょう。

instant執行方式について

instant執行方式は、事前に

取引種別、取引銘柄、ロット数、ストップロス(損切り値)、テイクプロフィット(利確値)、スリッページを指定した上で注文を出します。

スリッページとは?

スリッページとは、発注後に激しく価格が変動した局面において、現在値と発注前のレートとの乖離がどれくらいまでなら取引を許容するか、という設定値です。

もし現在値が、直近に提示された(=クオートされた)レートより、スリッページ分以上乖離したレートだった場合、MT5はレートの再提示(=リクオート)を行い、トレーダーが再提示されたレートを受け入れるか、拒否するかを問うてきます。受け入れれば約定、拒否すれば約定は不成立です。

レートの再提示(=リクオート)がなければ現在値で約定します。

Market執行方式について

market執行方式は、多くのブローカーが採用している執行方式です。

market執行方式採用ブローカーで、取引をする場合、instant執行方式と違い、レートの再提示(=リクオート)が発生しません。

発注したら、相場の価格変動の度合いに関わらず、現在値で約定します。

※まもなく記事で解説予定のフィルポリシーに該当するような事態は除く。

私が、MQL5を勉強した本では、market執行方式においては発注時にストップロスとテイクプロフィットの設定はできないので、約定後に注文修正のコーディングをしなくてはいけない、と書かれていたのですが、今のバージョンのMT5では発注時にストップロスとテイクプロフィットの設定は行えます。

↑の画像は、market執行方式採用のMT5口座で新規注文しようとした時の画面です。

タイプ欄に記載されている「カウントダウン注文」というのは、market執行方式のことです。

メタトレーダーの公式ページにもmarket執行方式=カウントダウン注文 の記載があります。

MetaTrader 5プラットフォームは、成行、指値、ストップオーダー、トレーリングストップを含む全ての注文タイプをサポートしています。あなたの目的に応じて、4つの実行モードを設定することができます。成行(Instant Execution)、指値(Request Execution)、カウントダウン(Market Execution)、そしてエクスチェンジ(Exchange)です。

メタトレーダー5公式ページより

赤線で囲ったストップロスとテイクプロフィットの箇所が、アクティブ化して値を入力できるようになっているのが、確認できるかと思います。

※なお、当サイトでおススメしているMT5対応業者の1つであるFX業者、外為ファイネストの成行注文執行形式はmarket執行方式となっています。

※外為ファイネストに関する詳細は↓の記事をご覧ください。

Exchange執行方式について

exchange執行方式はECNブローカーによって使われる執行方式です。

ECNとはElectronic Communications Network の略で ブローカーのディーリングデスクを介さずにトレードが執行される方式です。

exchange執行方式market執行方式と同様に

レートの再提示(=リクオート)が発生しません。発注したら、相場の価格変動の度合いに関わらず、現在値で約定するのもmarket執行方式と同様です。

従って、約定プロセスに違いはあるものの、exchange執行方式market執行方式に、外形的な違いはほぼありません。

※まもなく記事で解説予定のフィルポリシーに該当するような事態は除く。

Request執行方式について

Request執行方式は、ユーザーがブローカーに価格の提示を要請→ブローカーはその要請に対して価格を提示→その価格で了承するかどうかをユーザー最終判断する というプロセスの執行方式です

公式の説明は以下のリンクで確認できます。

リクエスト注文 - ポジションの開閉 - トレード - MetaTrader 5 iPhone版 - iPhone/iPad版MetaTrader 5のヘルプ

問題なのは、検証をするために口座を開こうにも、対象となる口座を見つけるのが困難なことです。

精緻なまとめ記事を書いていらっしゃる

投資で実現!不労所得生活」さんの記事→ https://memoja.net/p/2roz7fo/

でもRequest執行方式については

 主に為替以外の取引のために用意されており、あまり使われることはないようです。

投資で実現!不労所得生活」さんより

という伝聞調にならざるを得ないほどです((+_+))

Axioryのアルファ口座が、おそらくRequest執行方式と思われるので口座開設して検証できればな、と思っています。

執行方式の確認方法

各ブローカーが採用している執行方式の確認方法については、SymbolInfoInteger関数を使います。

SymbolInfoInteger関数は指定された銘柄に関する情報を取得する関数です。

SymbolInfoInteger関数についての詳細は↓の記事をご参照ください

第1引数に該当銘柄、第2引数に取得したいプロパティ定数を記述します。

執行方式を取得するには SYMBOL_TRADE_EXEMODE を使います。

void OnStart()
  {

   ENUM_SYMBOL_TRADE_EXECUTION exeMode = SymbolInfoInteger(NULL,SYMBOL_TRADE_EXEMODE);
   string executionType=EnumToString(exeMode);
   Print(executionType);
   
   
  }

上記のソースコードを実行してみると・・・

左上のコメント表示欄に「SYMBOL_TRADE_EXECUTION_MARKET」というのが表示されて、このブローカーは market執行方式であることがわかりますね。

MQL5において、執行方式はENUM_SYMBOL_TRADE_EXECUTION で定義されています。

定数値順に

となっています。

Enum列挙型については↓の記事をご覧ください。

オマケ

ここからはオマケです。気軽に読んでください。主にMT5公式ページに書かれている文言についての軽い突っ込みです。

オマケその1 -執行モードの決定権は誰のもの?-

執行モードに関する公式の引用ですが↓

“あなたの目的に応じて、4つの実行モードを設定することができます”と書いていながら、直後の真下の注意書きで

“取引操作の実行モードは、各金融商品に対するブローカーによって設定されています” と即否定しています。(>_<)

↓は英語版

英文にないYouのニュアンスが強く入ってしまった感じですね。

注意書きにもあるように、あくまで執行モードは我々ユーザーではなく、ブローカーが決定するものです。

オマケその2–

↓の画像は、モバイル版MT5の実行モードに関する説明箇所です。

日本語↓

英語

これを合わせて考えると、market執行方式には成行実行モード、という訳語、instant執行方式にはストリーミング注文という謎の訳語があてがわれている訳ですが、特にこれによって、なにかが分かり易くなっているわけでもなく、どうしてこんな訳語になっているのかも不明です。

また、 Market Order→成行注文という意味でもありますから、「market執行方式以外は成行じゃないの?」など、日本語訳を律儀に受け取っていると混乱します。

繰り返しますが、公式リファレンスの日本語訳にはとらわれず素直にinstant執行方式market執行方式exchange執行方式Request執行方式のまま、それぞれの仕組みを理解するようにしましょう。

まとめ

今回は 成行注文 について解説しました。

ネッティング/ヘッジングにも言えることですが、

執行方式も、

「この方式が一番多い」という通説、

各ブローカーが採用執行方式を大々的に明示しているわけでもない点、

MT5の進化、

それらが混然一体となって、MQL5が不可解さを醸す要因となっています。

執行方式については総じて、確証をもって説明できない点や検証が困難な点が現状いくつかあり、注視していきたいところです。

有力な情報を持っている方がいましたら、是非ご教示頂ければと思います<m(__)m>

今回の記事では以下のことを学びました

  • 成行注文とはマーケットの現在値で、該当銘柄をトレードする事をブローカーに伝える要求 のことである。
  • 成行決済とはマーケットの現在値で、該当銘柄を決済する事をブローカーに伝える要求のことである。

         instant執行方式

         market執行方式

         exchange執行方式

         Request執行方式

  の4つがある。

今回は以上になります。

最後までお読みいただきありがとうございました<m(__)m>

【超入門】MQL5 EA講座 第57回「ネッティングとヘッジング」【EAの作り方】

       →【超入門】MQL5 EA講座 第59回「フィルポリシーについて」【EAの作り方】

コメント

タイトルとURLをコピーしました