【MQL5パラダイス 第2回】初めてのプログラミング!MT5に「こんにちは」と挨拶させてみよう
おかえりなさい!さっそく開発環境を開いてみましょう
みなさん、こんにちは。パイナップルです。 前回の「MQL5パラダイス」第1回では、自動売買プログラム開発の心構えや、シンプルで堅牢なシステムの重要性についてお話ししました。少しでも「面白そうだな」と感じていただけたなら、とても嬉しく思います。
さて、今回はいよいよ実践編のスタートです。前回お約束した通り、実際にMT5(MetaTrader 5)を動かして、プログラミングの世界に足を踏み入れてみましょう。
パソコンの前に座り、お気に入りの飲み物は用意できましたか?リラックスした気持ちで、MT5を立ち上げてください。
まずは、プログラムを書くための専用画面である「MetaEditor(メタエディター)」を開きます。MT5の画面上部にある「IDE」ボタをクリックするか、キーボードの「F4」キーを押してみてください。 白い背景に、いくつかのメニューが並んだ新しいウィンドウが開いたでしょうか。これが、これから私たちが「料理のレシピ(プログラム)」を書き込んでいくためのキッチンになります。
EA、インジケーター、スクリプト。今日作るのはどれ?
MetaEditorが開いたら、さっそく新しいプログラムのファイルを作りましょう。 画面の左上にある「新規作成」ボタンをクリックすると、「MQL5ウィザード」という案内画面が立ち上がります。
ここで、どのような種類のプログラムを作るかを聞かれます。MQL5で作れる代表的なものには、大きく分けて以下の3つがあります。
- エキスパートアドバイザ (EA) チャートにセットすると、24時間365日、価格が動くたびに「今は買うべきか?売るべきか?」を判断し続ける、働き者の自動売買プログラムです。
- カスタムインジケーター チャート上に移動平均線を描いたり、条件を満たしたときに矢印のサインを出したりする、分析に特化したプログラムです。注文は出しません。
- スクリプト チャートにポイッと投げ込んだ(適用した)瞬間に、「決められた処理を1回だけ行って、すぐに終了する」という、おつかい係のようなプログラムです。
今回は「MT5に挨拶をさせる」という、1回きりの簡単な処理を行いたいので、3「スクリプト」を選びます。スクリプトを選択して「次へ」進み、名前に「Hello_MQL5」など、お好きなタイトルをつけて「完了」を押してください。
プログラムの「骨組み」を読み解いてみよう
新しいスクリプトのファイルが作成されると、画面にはあらかじめいくつかの文字(ソースコード)が書き込まれているはずです。
「うわっ、やっぱり英語ばっかりで難しそう……」
そう思って画面を閉じそうになった方、ちょっと待ってくださいね!深呼吸して、よく見てみましょう。 実は、最初に書かれている文字のほとんどは、プログラムの「説明書き」や「タイトル」に過ぎません。MT5が気を利かせて、「誰が、いつ作ったのか」というメモ書きのスペースを用意してくれているだけなのです。
一番重要なのは、画面の下の方にある「ここから処理をスタートしますよ」という合図のブロックです。
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
}
//+------------------------------------------------------------------+MQL5のスクリプトには、スタート地点を示す特別な枠組みが用意されています。例えるなら、100m走の「スタートライン」のようなものです。プログラムを実行すると、MT5はこのスタートラインを見つけ、その枠の中に書かれている手順を上から順番に実行していきます。
私たちがやるべきことは、この「スタートラインの枠の中」に、MT5にしてほしいお願いごとを書き込むことだけなのです。とてもシンプルですよね。
MT5に「こんにちは」と言わせる処理
それでは、スタートラインの枠の中に、初めての命令を書き込んでみましょう。 今回MT5にお願いするのは「画面の特定の場所に、私が指定した文字を表示してね」という処理です。
MQL5の世界では、文字を出力して記録を残すための、専用の「プリント処理」が用意されています。紙に印刷するわけではありませんが、MT5の内部にある「ログ(記録帳)」に文字を印字するようなイメージを持ってください。
このプリント処理を書き込む際には、いくつかのお作法(ルール)があります。
- 出力したい文字を「" "(ダブルクォーテーション)」で囲む 例えば、「こんにちは、MQL5!」という日本語を表示させたい場合、そのまま書くとMT5は「これはプログラムの命令文かな?それともただの文字かな?」と混乱してしまいます。そこで、文字の前後を「"」で囲むことで、「これはただのメッセージだから、そのまま表示してね」と教えてあげるのです。
- 命令の最後に「;(セミコロン)」をつける 日本語の文章の終わりに「。(マル)」をつけるように、MQL5では「ここで一つの命令が終わりましたよ」という合図として、最後にセミコロンを打ちます。これを忘れると、MT5は「まだ命令が続いているのかな?」と勘違いして、エラーを起こしてしまいます。
この2つのルールを守って、スタートラインの中にプリント処理を書き込みます。
「プリント処理を使って、“こんにちは、MQL5!” というメッセージを出力しなさい。以上(セミコロン)。」
//+------------------------------------------------------------------+
//| Hello_MQL5.mq5 |
//| Copyright 2025, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { // Print関数を使ってメッセージを出力します Print("こんにちは、MQL5!"); } //+------------------------------------------------------------------+
たったこれだけで、私たちの最初のプログラム(レシピ)は完成です。
MT5に言葉を教える「コンパイル(翻訳)」の魔法
レシピが書き上がったら、すぐにMT5で動かしたいところですが、実はもう一つだけやらなければならない作業があります。それが「コンパイル」です。
私たちが今MetaEditorに書いたレシピは、人間が見て分かりやすい言葉(MQL5)で書かれています。しかし、パソコンの頭脳(CPU)は、この言葉を直接理解することができません。パソコンは「0」と「1」の数字の羅列しか理解できないからです。
そこで、MetaEditorの上部にある「コンパイル」というボタン(またはF7キー)を押します。 すると、MetaEditorが優秀な通訳者として働き、私たちが書いたMQL5のレシピを一瞬で「パソコンが理解できる0と1の機械語」に翻訳(変換)してくれます。
コンパイルボタンを押したあと、画面の下にある「エラー」の表示部分を見てみてください。 「0 errors, 0 warnings(エラー0、警告0)」と表示されていれば、翻訳は大成功です!
もしエラーが表示された場合は、MT5が首をかしげて「ここがよく分からないよ」と言っている状態です。スペルが間違っていたり、最後のセミコロンを忘れていたり、あるいは全角スペースが混ざっていたりしませんか? エラーは決して怒られているわけではありません。「ここを直せば動くよ」という優しいヒントですので、焦らずに見直してみましょう。
記念すべき第一歩!MT5で実行してみよう
エラーゼロでコンパイルが成功したら、ついに実行の時です。MetaEditorからMT5のチャート画面に戻りましょう。
画面左側の「ナビゲータ」というウィンドウを見てください。もし表示されていなければ、上部のメニューの「表示」から「ナビゲータ」を選びます。 ナビゲータの中にある「スクリプト」というフォルダを展開すると……ありました!先ほど私たちが作った「Hello_MQL5」という名前が追加されているはずです。
これをマウスでカチッとクリックしたまま、表示されているチャートの上にドラッグ&ドロップ(引っ張ってきて指を離す)してみてください。
「……あれ?何も起きないよ?」
そう思われたかもしれませんね。実は、このプリント処理は、チャートのど真ん中にドカンと大きな文字を出すような派手なものではありません。裏方で静かに記録を残すためのものなのです。
MT5の画面下部にある「ツールボックス」を見てください。(表示されていなければ、メニューの「表示」から「ツールボックス」を出します)。 ツールボックスの中にはいくつかタブがありますが、その中の「エキスパート」というタブをクリックしてみましょう。
そこに、時刻とともに「こんにちは、MQL5!」というメッセージがしっかりと刻まれているはずです。
おめでとうございます! あなたが書いた文字が、プログラムという「魔法の言葉」を通して、見事にMT5へと伝わりました。これが、あなたが初めてコンピューターを自分の意志で動かした記念すべき瞬間です。
シンプルで堅牢なトレードのために「プリント処理」が果たす役割
「文字をちょこっと表示させただけで、これが自動売買にどう関係するの?」と不思議に思う方もいらっしゃるでしょう。
実は、この地味に見える「プリント処理(ログ出力)」こそが、シンプルで堅牢なシステムを作るための最強の武器になります。
プログラミングをしていると、EAが私たちの思い通りの動きをしてくれないことが多々あります。「なぜここでエントリーしたの?」「なぜここで決済しなかったの?」と頭を抱えることでしょう。 そうしたとき、プログラムの中に「今の移動平均線の数値は〇〇だよ」「今は買いの条件を満たしたよ」といったプリント処理を要所要所に仕込んでおくのです。
そうすれば、エキスパートタブの記録(ログ)を見るだけで、EAの頭の中(内部の計算状態)が手に取るように分かります。
ブラックボックス化された市販のEAでは、なぜ負けたのか、なぜ勝ったのかが分かりません。しかし、自分で作ったEAであれば、ログを出力させることで「相場の中でプログラムがどう判断したか」を完全に把握できるのです。
過剰な最適化(カーブフィッティング)を避けるためには、システムが「なぜその行動をとったのか」という根拠を、開発者自身がクリアに理解していなければなりません。今日皆さんが学んだプリント処理は、EAと対話し、その根拠を確認するための最も大切なコミュニケーションツールなのです。
おわりに
今回は、MetaEditorの使い方から、簡単なスクリプトの作成、コンパイル、そしてログ出力の確認までを一気に体験していただきました。 最初は見慣れない画面に戸惑ったかもしれませんが、「なんだ、手順を踏めば意外と簡単じゃないか」と感じていただけたのではないでしょうか。
自分で書いたレシピ通りにシステムが動いてくれる喜び。この小さな成功体験の積み重ねが、いずれ強力な自動売買システムへと繋がっていきます。焦らず、楽しみながら進めていきましょうね。
次回は、プログラムの世界で最も重要で、そして最も便利な「変数(へんすう)」という仕組みについてお話しします。 変数とは、数字や文字をしまっておく「魔法の箱」のようなものです。「現在の価格」や「ロット数」といったデータをこの箱にどうやって入れ、どうやって取り出すのか。分かりやすい例えを交えながら解説していきます。
それでは、次回の「MQL5パラダイス」でまたお会いしましょう。 あなたが書いた最初のプログラムに、乾杯!
よろしいですか?