『新メタトレ入門本』EAの自動売買のためのプログラミング


新MT4対応 FXメタトレーダープログラミング入門』(新メタトレ入門本)連動企画です。

今回は、本書の第4章「エキスパートアドバイザー(EA)のプログラミング」の最後のセクション「4-7 EAの自動売買のためのプログラミング」についてです。

【目次】
第1章 メタトレーダーの紹介
第2章 スクリプトのプログラミング
第3章 カスタム指標のプログラミング
第4章 エキスパートアドバイザー(EA)のプログラミング
  4-1 新規ファイルの作成
  4-2 EAの基本プログラム
  4-3 ストラテジーテスターによるEAの動作確認
  4-4 EAのサンプルプログラム
  4-5 EAのデバッグ
  4-6 ストラテジーテスターによるEAの最適化
  4-7 EAの自動売買のためのプログラミング

本書アップデート情報

このセクションでは、本書内容のアップデートはありません

関連するMT5情報

MT5でEAを実際にチャートで動かす際の手順やMQL5でのプログラミングについて、MT4、MQL4との違いを説明します。

EAの実行

EAの実行の仕方はMT4と同じです。実行させたいEAをチャートにドラッグ&ドロップします。
そのときに確認の画面が出ますが、これはMT4よりシンプルです。

アルゴリズム取引を許可」にチェックが入っているか確認するだけです。

スリッページの調整

MQL5のOrderSend()関数で、スリッページの設定を行うには、「request.deviation」にスリッページを設定した上でOrderSend()を実行します。

例えば、スリッページが「Slippage」という変数に入力されている場合、

request.deviation = Slippage;

と記述します。

EA再実行時のチケット番号の取得

MQL5のOrderSend()関数で、マジックナンバーの設定を行うには、「request.magic」にマジックナンバーを設定した上でOrderSend()を実行します。

例えば、マジックナンバーが「Magic」という変数に入力されている場合、

request.magic = Magic;

と記述します。そして、このマジックナンバーの付加されたポジションのチケット番号をEAの実行時に取得するには、以下のようなコードを初期化関数OnInit()に追加します。

   //チケット番号の取得
   for(int i=0; i<PositionsTotal(); i++)
   {
      if(PositionGetSymbol(i) == _Symbol && PositionGetInteger(POSITION_MAGIC) == Magic)
      {
         Ticket = PositionGetInteger(POSITION_TICKET);
         break;
      }
   }

ポジション選択の考え方は基本的にはMQL4と同じですが、呼び出す関数が異なっています。

PositionsTotal()は、MQL4のOrdersTotal()に対応する関数です。オープンポジションの個数を返します。

PositionGetSymbol(i)」は、i番目のポジションを選択して、選択が成功すれば、シンボル名を返します。
それが「_Symbol」と一致するという条件は、MQL4の「OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == _Symbol」と同等の条件となります。

あとは、PositionGetInteger(POSITION_MAGIC)が、MQL4のOrderMagicNumber()と同じ、PositionGetInteger(POSITION_TICKET)が、MQL4のOrderTicket()と同じと考えればOKです。

売買位置の表示

MQL5のOrderSend()関数では、売買位置を表示するためのカラーの設定項目はありません

MT5では、売買位置の表示は個別にプログラムから制御することはできず、MT5の設定で一括して管理されています。

以下のように、チャートメニューか、チャートプロパティに「取引履歴」という項目があります。

これを有効にすると、チャート上に売買位置が表示されます。

取引を通知する

通知に関するAlert()SendMail()SendNotification()の各関数は、MQL5でも同様に利用することができます。

サンプルプログラムex10_ea.mq4をMQL5用に修正したコードは以下のようになります。

前へ

『新メタトレ入門本』ストラテジーテスターによるEAの最適化

次へ

『新メタトレ実践本』連動企画 - MT4&MT5実践プログラミング