ブログタイトルを「FX自動売買システム開発部」から「autoFX」に変更しました!

MQL4プログラミングの扉を開けよう

MQL4プログラミングも基礎が大事

MQL4プログラミングに入ります。最初は基礎なので、つまらないかもしれませんが、EAを自作するにあたり、避けては通れない道です。基礎が大事なのは、仕事でもスポーツでも同じですよね。

プログラミングの経験が無い人には馴染みの無い考え方が沢山出てきて、苦労するかもしれません。

でも、大丈夫です。誰だって初めはそんなものです。私もそうでした。

決して優秀ではない私でも習得できたのですから、あなただってきっとEAを作れるようになれます!

一緒に頑張りましょう(^-^)

まずは、MQL4プログラミングの細かい話は置いといて、MQL4プログラミングの世界に実際に触れてみましょう。

「Hello World!」から始めよう

メタエディターを開いて、[新規作成]ボタンをクリックします。

新規作成

MQL4ウィザードが表示されます。[エキスパートアドバイザ(テンプレート)]がチェックされていることを確認後、[次へ]ボタンをクリックします。

MQL4ウィザード

[名前]に、「Experts\Hello World!」と入力し、[次へ]ボタンをクリックします。

MQL4ウィザード-プロパティ

以降は、デフォルトのまま[次へ]ボタン、[完了]ボタンをクリックします。

MQL4ウィザード-イベントハンドラ

MQL4ウィザード-テスターイベントハンドラ

MQL4ウィザードが終了すると、Hello World!.mp4(EA)の雛型が作られます。

//+------------------------------------------------------------------+
//|                                                 Hello World!.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
[コンパイル]ボタンをクリックして、コンパイルが正常終了する(0 error(s)になる)ことを確認します。

EA雛型のコンパイル結果

次に、34行目の位置に「Print(“Hello World!”);」と入力して再度コンパイルしてみましょう。「Hello World!」を表示するEA(Hello World!.ex4)が作成されます。

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Print("Hello World!");
  }
//+------------------------------------------------------------------+

「Hello World!」を表示してみよう

平日の場合は、デバッグボタンデバッグボタンをクリックします。土日の場合は、MT4の画面に戻ってから「Hello World!.ex4」をバックテストします。

どうなりましたか?

成功していれば、「Hello World!」というメッセージが、ターミナルウィンドウ(デバッグ)かテスターウィンドウ(バックテスト)に「もういいよ…」ってぐらい表示されるはずです(笑)

Hello World!のログ

デバッグの場合、いつまでも出力し続けてしまうので、停止ボタンデバッグ停止ボタンをクリックして、デバッグを停止します。

Printって何?

Print(出力させたい文字列);は、で囲まれた文字列を出力する命令です(「Print関数」と言います)。Hello Worldの代わりに、ハローワールドと記述すれば、「ハローワールド」と出力されます。これからも頻繁に使いますので、ここでしっかり覚えましょう。

チェックです!
吹き出し

MQL4では、命令の終わりに「;」を付けます。文章の句点だと思ってください。メタエディターは「;」を見て、「ここで、この命令は終わりなんだな」と解釈します。忘れやすいので、気をつけましょう。

あと、MQL4は大文字と小文字を異なるものとして解釈します。従って、Print関数の綴りは「Print」としなければなりません。「print」や「PRINT」だとコンパイルエラーになります。

以下はコンパイルエラーになる例です。

Print(Hello World);   //←""で囲っていない
Print("Hello World")  //←文末に;がない
print("Hello World"); //←Print関数の頭文字が小文字になっている

ちゃんとエラーになることを自分でも確認してくださいね。

MQL4プログラミングでは、とにかく手を動かすことが重要です。読んだだけでプログラムが書けるようになることは、まずありません。

トライ&エラーを繰り返しながら、何が良くて何がダメかを肌で覚えるようにしましょう。

MQL4プログラミングの最新記事8件

>完全放ったらかしEA 「AutoEndlessCatchRange」

完全放ったらかしEA 「AutoEndlessCatchRange」

「本業が忙しい!」「でも資産運用したい!」そんなあなたに最適なEAです。兼業トレーダーの方はチャートを毎日みて分析してトレードする時間はなかなか確保できないものです。トレードは本EAに任せて、本業やプライベートの時間をもっと増やしませんか?元々は自分自身のために開発したEAですので、手抜き無しのガチものです。

CTR IMG