最終更新: 2026年6月
MQL5は難しい——そう思い込んでいる人が多い。
実際のところ、C言語の文法を知らなくてもMQL5でシンプルなインジケーターは書ける。筆者は大学院で金融工学を専攻した後、アルゴリズム取引の現場を経て、現在はMQL5の教育に関わっているが、「プログラミング未経験から3ヶ月でEAを動かせるようになった」という受講者は珍しくない。
この記事では、MQL5プログラミングの基礎構造・開発環境・最初に覚えるべき概念を体系的に解説する。「どこから始めればいいかわからない」という方に向けた入門ガイドだ。
MQL5とは何か
MetaQuotes Language 5(MQL5)は、MetaTrader 5(MT5)プラットフォーム上で動作するプログラミング言語だ。技術指標(インジケーター)・自動売買プログラム(EA: Expert Advisor)・スクリプト・ライブラリの4種類のプログラムを作成できる。
文法的にはC++に近い。変数の型宣言、条件分岐、ループ、関数——これらの概念はC言語を知っている人なら違和感なく使える。完全な初心者でも、基本的な構文を覚えるのに数週間あれば十分だ。
MQL4とMQL5の違いで特筆すべき点は、MT5が「マルチ通貨・マルチ市場」に対応していること。株式・商品・FXを同一プラットフォームで扱える設計になっており、MQL5はその分だけ関数の幅が広い。
開発環境の準備
MetaEditorを開く
MQL5のIDEはMT5に内蔵されている。MT5を起動し、上部メニューから「ツール」→「MetaEditor」を選ぶか、F4キーを押すと起動する。
MetaEditorには以下の機能が備わっている。
- シンタックスハイライト(コードの色分け表示)
- 自動補完(関数名・変数名の候補表示)
- デバッガ(ステップ実行・変数値の確認)
- コンパイラ(ソースコード→実行ファイルへの変換)
この開発環境が無料で使える点はMQL5の大きなメリットだ。
最初のファイルを作成する
MetaEditorのメニューから「ファイル」→「新しいファイル」を選ぶと、ウィザードが起動する。「カスタムインジケーター」「エキスパートアドバイザ」「スクリプト」の種類を選び、ファイル名を入力すれば、テンプレートコードが自動生成される。
MQL5プログラムの基本構造
MQL5のプログラムは、大きく「プロパティ定義」「グローバル変数」「イベントハンドラ関数」で構成される。
インジケーターの基本骨格
// プロパティ定義
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
#property indicator_label1 "MyLine"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrBlue
#property indicator_width1 2
// インジケーターバッファ
double Buffer[];
// OnInit: 初期化処理(起動時に1回だけ実行)
int OnInit()
{
SetIndexBuffer(0, Buffer, INDICATOR_DATA);
return INIT_SUCCEEDED;
}
// OnCalculate: 価格データが更新されるたびに実行
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
for(int i = prev_calculated; i < rates_total; i++)
{
Buffer[i] = close[i]; // 終値をそのまま描画(例)
}
return rates_total;
}
重要な関数は3つある。OnInit()・OnCalculate()・OnDeinit()だ。
| 関数名 | 実行タイミング | 主な用途 | |---|---|---| | OnInit() | プログラム起動時(1回) | バッファ割り当て・変数初期化 | | OnCalculate() | 価格データ更新ごと | 指標値の計算・バッファへの書き込み | | OnDeinit() | プログラム終了時(1回) | リソース解放・後処理 |
EAの場合、OnCalculate()の代わりにOnTick()が使われる。ティックが来るたびに実行される関数だ。
最初に覚えるべき基本構文
データ型
int count = 0; // 整数
double price = 1.3456; // 浮動小数点(価格・指標値に使う)
bool flag = true; // 真偽値
string name = "USDJPY"; // 文字列
datetime dt = TimeCurrent(); // 日時型
価格データにはdouble型を使う。整数の割り算は切り捨てられるため、1/2は0.5ではなく0になる点に注意が必要だ。
条件分岐
if(close[0] > open[0])
{
// 陽線の処理
}
else
{
// 陰線の処理
}
ループ
for(int i = 0; i < 100; i++)
{
Buffer[i] = close[i];
}
組み込み関数(よく使うもの)
| 関数 | 説明 | |---|---| | iMA(symbol, period, ma_period, shift, method, price) | 移動平均を取得 | | iRSI(symbol, period, rsi_period, price) | RSI値を取得 | | iATR(symbol, period, atr_period) | ATR値を取得 | | TimeCurrent() | 現在時刻を取得 | | Print("テキスト") | ジャーナルにログ出力 |
MQL5学習のロードマップ
筆者が推奨する学習順序はこうだ。
Phase 1(1〜2週間): 環境構築と文法の基礎
- MetaEditorのインストールと操作
- 変数・条件分岐・ループの練習
- Hello Worldインジケーターの作成
Phase 2(2〜4週間): インジケーターの自作
- 単純移動平均(SMA)の手計算実装
- 価格データ配列(close, high, low)の扱い
- 複数バッファの描画
Phase 3(1〜2ヶ月): EA基礎
- OnTick()の構造理解
- 注文関数(OrderSend / Trade.Buy / Trade.Sell)
- ポジション管理(保有中かどうかの判定)
Phase 4(継続): バックテストと最適化
- ストラテジーテスターの使い方
- パラメーター最適化とオーバーフィッティングの識別
正直なところ、Phase 1〜2を飛ばしてEAを作ろうとする初学者が多い。結果、エラーの原因がわからずに挫折する。土台をしっかり固めることが、最終的には一番の近道だ。
参考リソース
公式ドキュメントはMQL5.comの「Documentation on MQL5: Language Basics」が最も信頼できる。日本語リソースとしては、「ゼロから始めるMQL5プログラミング講座」(mqlinvestmentlab.com)が体系的にまとめられており、初学者には読みやすい。
Claudeと会話しながらインジケータが作れるhedgrow-fxでは、MQL5の知識がなくても対話形式でカスタムツールを設計できる。「コードが書けないけど自分のロジックを実装したい」という段階での選択肢として知っておく価値はある。
YMYL注記
MQL5で作成したEAによる取引には損失リスクが伴います。バックテストの結果は過去のデータに基づくものであり、将来の利益を保証するものではありません。システム取引を行う場合はリスク管理の設定を必ず確認してください。
よくある質問(FAQ)
Q: MQL4とMQL5はどちらを学ぶべきですか? A: これから始める方にはMQL5を推奨します。MT5はMT4に比べて機能が豊富で、今後のサポートも長い。既存のMQL4コードを活用する必要がある場合のみMQL4を使います。
Q: プログラミング経験がまったくない場合、どれくらいで動くEAが作れますか? A: 学習時間1〜2ヶ月程度(週5〜10時間)でシンプルなEAを動かすことは可能です。ただし「動く」と「信頼できる」は別物で、バックテスト検証まで含めると3〜6ヶ月は見ておいてください。
Q: 作ったインジケーターをMT4でも使えますか? A: MQL5で書いたコードはMQL4とは互換性がありません。MT4で使いたい場合はMQL4で書き直す必要があります。
Q: MetaEditorのデバッガはどのように使いますか? A: コード行の左側をクリックしてブレークポイントを設定し、F5キーでデバッグ実行を開始します。変数の値がリアルタイムで確認できるので、計算ロジックの検証に役立ちます。
Q: MQL5のコードはMQL5.comのマーケットで販売できますか? A: はい。MQL5.comのマーケットプレイスでは個人が作成したEAやインジケーターを販売できます。ただし品質審査があり、すべてが掲載されるわけではありません。
免責事項: 本記事はMQL5プログラミングの教育目的で作成されています。FX取引・自動売買には元本割れのリスクがあります。取引はご自身の判断と責任のもとで行ってください。
