MQLで最初に書くEAとして定番の、ティックが更新されるたびに”HalloWorld”とチャートに表示するだけのEAです。

コード自体はシンプルですが、この記事では「表示する」だけでなく「EAを止めたときにちゃんと消す」ところまで一緒に覚えてしまいましょう。動かしっぱなしにする癖がつくと、後で作る本格的なEAでも表示の消し忘れに気づかなくなります。

ティックが更新されるたびにHalloWorldと表示されるEA

ティックが更新されるたびにHalloWorldと表示されるEAを作成したいと思います。

メタエディタ(MetaEditor)を立ち上げる

MT4を起動し、ツールバーの黄色いボタン(またはツール→MetaQuotes Language Editor)からメタエディタ(MetaEditor)を立ち上げましょう。

「ファイル」→「新規作成」→「Expert Advisor(テンプレートを使用)」を選び、名前を入力して進むと、OnInit()・OnDeinit()・OnTick()だけが書かれた空のひな形が開きます。

OnTick()関数を記述する

Comment("HalloWorld");
Copy

OnTick()の中にこの1行を書くだけで、新しいティックが来るたびにチャート左上に「HalloWorld」と表示されます。

EAを停止したときに表示を消す

このままだと、チャートからEAを外したり別のEAに切り替えたりしても、Comment()で表示した文字がチャートに残り続けてしまいます。OnDeinit()(EAが終了するときに呼ばれる関数)で空文字を渡してComment()を呼び出せば、表示をきれいに消せます。

void OnDeinit(const int reason)
  {
   Comment("");//表示していたコメントを消す
  }

コンパイルする

コンパイルしましょう。チャートにHalloWorldを表示されていたら完了です。

MQL EA(エキスパートアドバイザー) HalloWorld

チャートからEAを外したあと、表示がきちんと消えることも確認しておきましょう。

ソースコード全体

//+------------------------------------------------------------------+
//|                                                   HalloWorld.mq4 |
//|                     Copyright 2020, FX-EA System Project Creator |
//|                        https://creator.fx-ea-system-project.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, FX-EA System Project Creator"
#property link      "https://creator.fx-ea-system-project.com/"
#property version   "1.01"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");//表示していたコメントを消す
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Comment("HalloWorld");
  }
//+------------------------------------------------------------------+
Copy

まとめ

非常に簡単なものでしたが、動きは確認できたはずです。「表示する」だけでなく「消す」までがセットだと覚えておくと、この後もっと複雑なEAを作るときにも役立ちます。

関連記事