MQL4プログラミングも基礎が大事
MQL4プログラミングに入ります。最初は基礎なので、つまらないかもしれませんが、EAを自作するにあたり、避けては通れない道です。基礎が大事なのは、仕事でもスポーツでも同じですよね。
プログラミングの経験が無い人には馴染みの無い考え方が沢山出てきて、苦労するかもしれません。
でも、大丈夫です。誰だって初めはそんなものです。私もそうでした。
決して優秀ではない私でも習得できたのですから、あなただってきっとEAを作れるようになれます!
一緒に頑張りましょう(^-^)
まずは、MQL4プログラミングの細かい話は置いといて、MQL4プログラミングの世界に実際に触れてみましょう。
「Hello World!」から始めよう
メタエディターを開いて、[新規作成]ボタンをクリックします。
MQL4ウィザードが表示されます。[エキスパートアドバイザ(テンプレート)]がチェックされていることを確認後、[次へ]ボタンをクリックします。
[名前]に、「Experts\Hello World!」と入力し、[次へ]ボタンをクリックします。以降は、デフォルトのまま[次へ]ボタン、[完了]ボタンをクリックします。
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)になる)ことを確認します。
次に、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!」というメッセージが、ターミナルウィンドウ(デバッグ)かテスターウィンドウ(バックテスト)に「もういいよ…」ってぐらい表示されるはずです(笑)
デバッグの場合、いつまでも出力し続けてしまうので、停止ボタンをクリックして、デバッグを停止します。
Print(出力させたい文字列);は、で囲まれた文字列を出力する命令です(「Print関数」と言います)。Hello Worldの代わりに、ハローワールドと記述すれば、「ハローワールド」と出力されます。これからも頻繁に使いますので、ここでしっかり覚えましょう。
MQL4では、命令の終わりに「;」を付けます。文章の句点だと思ってください。メタエディターは「;」を見て、「ここで、この命令は終わりなんだな」と解釈します。忘れやすいので、気をつけましょう。
あと、MQL4は大文字と小文字を異なるものとして解釈します。従って、Print関数の綴りは「Print」としなければなりません。「print」や「PRINT」だとコンパイルエラーになります。
以下はコンパイルエラーになる例です。
Print(Hello World); //←""で囲っていない Print("Hello World") //←文末に;がない print("Hello World"); //←Print関数の頭文字が小文字になっている
ちゃんとエラーになることを自分でも確認してくださいね。
MQL4プログラミングでは、とにかく手を動かすことが重要です。読んだだけでプログラムが書けるようになることは、まずありません。
トライ&エラーを繰り返しながら、何が良くて何がダメかを肌で覚えるようにしましょう。