はじめに
MT4(MetaTrader 4)は、世界中のトレーダーが利用する人気の高い取引プラットフォームです。
その魅力の一つが、独自のプログラミング言語である**MQL4(MetaQuotes Language 4)**を使って、インジケーターや自動売買システム(EA:Expert Advisor)を自由に作成・カスタマイズできること。
プログラマー経験者であれば、MQL4の基本を理解することでMT4の可能性が一気に広がります。
この記事では、プログラミング経験者向けに、MQL4の基礎や活用方法をやさしく、でも詳しく解説します。✨
📝 1. MQL4とは?
MQL4は、MT4用に開発された専用プログラミング言語です。
C言語に似た構文を持っており、基本的な制御構文(if文、forループなど)を使って取引戦略やカスタムインジケーター、スクリプトを作成できます。
✅ MQL4でできること:
- カスタムインジケーター作成: 自分だけのオリジナル指標が作れる。
- 自動売買プログラム(EA)の開発: 条件を満たしたときに自動で売買可能。
- スクリプトの作成: 特定の一回限りの操作を自動化。
- アラート設定: チャート上で条件に合ったときに通知。
💡 ポイント:
- C言語経験者なら、基本構文や関数にすぐに馴染めます。
- 実際の価格データやインジケーターの値をリアルタイムで扱えるのが魅力。
🧩 2. MQL4で何が作れる?
📊 2-1. カスタムインジケーター
デフォルトの指標に満足できない場合、自分専用のインジケーターを作成できます。
例えば、「移動平均線とRSIの条件が同時に満たされたときに矢印を表示する」など、既存の指標を組み合わせたツールが可能です。
✅ 活用例:
- トレンド転換ポイントを自動で表示。
- ボラティリティに基づいたエントリーゾーンを可視化。
🤖 2-2. エキスパートアドバイザー(EA)
エキスパートアドバイザーは、一定の条件下で自動的に注文や決済を行うプログラムです。
「寝ている間に自動でトレードしてくれる」と聞くと夢のようですが、適切なロジック設計とリスク管理が重要です。
✅ 活用例:
- 移動平均線のクロスで自動エントリー。
- 利益確定・損切りラインを自動で調整。
🧮 2-3. スクリプト
スクリプトは、一度きりのアクションを即実行するツールです。
例えば「現在開いているすべてのポジションを一括で決済する」など、手動操作の手間を省きます。
✅ 活用例:
- 瞬時に複数通貨ペアのチャート設定を変更。
- 複数ポジションの即時クローズ。
🖥️ 3. MQL4の基本構造と書き方
MQL4は、以下の基本構造で成り立っています。
// インジケーターの初期設定
int OnInit() {
// 初期化コードを書く場所
return(INIT_SUCCEEDED);
}
// チャートが更新されるたびに呼ばれる関数
void 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[]) {
// メインロジックを書く場所
}✅ 主な関数:
- OnInit(): インジケーターやEAが起動したときに一度実行。
- OnCalculate(): チャートが更新されるたびに呼び出され、値計算などを担当。
- OnTick(): 価格が変動するたびに実行(EAでよく使用)。
💡 ポイント:
- コメントアウトは
//で記述可能。 - データ型はC言語に似ていて、
int(整数)、double(小数)、string(文字列)などがあります。
🚀 4. 実際にインジケーターを作ってみよう!
以下は、チャートにシンプルな移動平均線を表示するコード例です。
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
double maBuffer[];
int OnInit() {
SetIndexBuffer(0, maBuffer); // バッファの設定
return(INIT_SUCCEEDED);
}
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 = 0; i < rates_total; i++) {
maBuffer[i] = iMA(NULL, 0, 14, 0, MODE_SMA, PRICE_CLOSE, i); // 14期間の単純移動平均線
}
return(rates_total);
}✅ コード解説:
#propertyでインジケーターの基本情報を設定。maBufferという配列に移動平均の計算結果を格納。iMA関数は、指定したパラメーターで移動平均値を返します。
💡 実行方法:
- MT4の「MetaEditor」を開く。
- 新しいインジケーターを作成して上記コードをコピー。
- 「コンパイル」をクリックして保存。
- MT4に戻り、ナビゲーターからインジケーターをチャートに適用!
💻 5. MQL4学習に役立つリソース
✅ おすすめの学習先:
- MQL5公式サイト: サンプルコードやドキュメントが豊富。
- GitHub: 無料で公開されているコードを参考にできる。
- YouTube: コードの書き方や実装例を動画で学べる。
✅ 学習のコツ:
- まずは既存のインジケーターをいじってみる。
- 小さな機能追加から試して慣れていく。
- エラーが出たら焦らず、コンソールのメッセージを確認!
🚫 6. 注意点とよくあるミス
⚠️ ループ内の計算ミスに注意!
無限ループやインデックス超えを起こさないように、for文などの制御構文に注意。
⚠️ 過剰なインジケーター表示は逆効果!
チャートが見づらくなりすぎないよう、必要最低限の表示を心がけよう。
⚠️ コードのバックアップを忘れずに!
作成中は定期的に保存。特に大きな変更前にバックアップを取ろう。
🎁 まとめ
✅ MQL4はMT4をより深く理解するための強力なツール!
✅ プログラミング経験者なら構文にすぐ慣れる!
✅ 自作インジケーターや自動売買でトレードの幅が広がる!
✅ 小さなコード修正から始めて、徐々に応用を学ぼう!
MQL4を学べば、MT4でのトレードがより戦略的で楽しいものに変わります。
「こんなインジケーターがあればいいのに…」と思ったら、ぜひ自分で作ってみましょう!✨
