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

アイキャッチ

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

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

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

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

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

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

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

「Hello World!」から始めよう

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

新規作成

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

MQL4ウィザード

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

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

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

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

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

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

[コンパイル]ボタンをクリックして、コンパイルが正常終了する(0 error(s)になる)ことを確認します。

EA雛型のコンパイル結果

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

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

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

どうなりましたか?

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

Hello World!のログ

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

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

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

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

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

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

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

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

スポンサードリンク

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)

にほんブログ村 為替ブログ FX システムトレード派へ

3件のコメント

  • たけパパ

    りゅーきさん、こんにちは!
    教えて頂きたいことがあります。
    コンパイル後のex4ファイルを適用して《にこちゃんマーク》状態で
    新しいex4を生成した時(再コンパイルをした時)、新しいex4で適用されているのでしょうか?
    どうも私の方で実験してみたのですが
    プロパティのバージョンを上げてみたところ、自動で適用されました。
    ターミナルにも適用されているようなログが出力されているのできっとそうだろうなと思いましたが…
    しかしexternの初期値を変えても、それは適用されないようです。
    実際のロジックは更新されているのか、ご存知でしたら教えてください。

    • りゅーき

      たけパパさん、こんばんわ。
      私も試してみましたが、確かにプロパティの変更は反映されましたね。
      このことからコンパイル後のex4を参照していると考えて間違いないでしょう。
      externの値を変えても反映されないのは、ターミナルがパラメータの設定内容を保存しているからだと思います。
      そうしないと、たとえば市販のex4でアップデート時に置き換える際、パラメータ内容が初期化されちゃうと不便ですよね。
      「保存場所はこのファイルだよ!」とお伝えしたかったのですが、すみません。そこまで把握しておりません。
      バックテスト時のパラメータ内容ならtesterフォルダにあるんですけどね。

      • たけパパ

        こんにちはりゅーきさん。
        ・ターミナルで保存されている。
        ・バックテストはtesterフォルダ
        でなんだか探せそうです!
        ありがとうございます。

1件のトラックバック

コメントを残す



14 + twenty =