MQL4(MetaQuotes Language 4)は、MT4で使用されるプログラミング言語です。
FX自動売買EAやカスタムインジケーター、スクリプトなどを自分で作成したいと考えているなら、習得が必要です。
本記事ではMQL4言語の学習方法と学習ロードマップについて解説します。
学習している間に自動で稼いでくれる自動売買も紹介するので最後まで読み進めてください。
MQL4言語とは?
MQL4(MetaQuotes Language 4)は、MT4で使用されるプログラミング言語です。
FX自動売買EAやカスタムインジケーター、スクリプトなどを作成することができます。
MQL4はC言語に似た言語なので、すでにC言語の基礎がわかっている人ならすぐに習得することができます。
MQL4言語の学習方法
MQL4言語の学習方法としては以下の2つが考えられます。
- 本
- 公式ドキュメント
それぞれについて解説します。
本
MQL4やMetaTrader 4に関連する書籍は非常に多く、自分のスキルにあった本が必ずあります。
自分のペースで学習することができるので、仕事で忙しい場合でも本で学習するのはおすすめです。
特におすすめの書籍はFXメタトレーダープログラミング入門です。
公式ドキュメント
公式ドキュメントは常に最新の情報が掲載されているので、公式ドキュメントでMQL4について学習するのもおすすめです。
具体的な使用例やサンプルコードが掲載されているので、ある程度プログラミングスキルのある人ならすぐに習得することができます。
MQL4言語の学習のロードマップ
MQL4言語の学習のロードマップは以下の通りです。
- 基本的なプログラミング知識について学ぶ
- 公式ドキュメントとチュートリアルに目を通す
- 開発環境のセットアップ
- サンプルコードの分析
- EAやカスタムインジケーターを作成してみる
- バックテストと最適化
- MQL4を学び続ける
それぞれ解説します。
基本的なプログラミング知識について学ぶ
C言語やC++のような基本となるプログラミング言語を学びましょう。
MQL4はC言語に似ているので、C言語を学ぶことをおすすめします。
公式ドキュメントとチュートリアルに目を通す
MetaQuotesの公式ウェブサイトやフォーラムでMQL4の公式ドキュメントとチュートリアルを読みましょう。
開発環境のセットアップ
MetaTrader 4をダウンロードしてインストールしましょう。
インストールが完了したらMetaEditorと呼ばれるMQL4コードを書くためのエディタのセットアップを行いましょう。
サンプルコードの分析
すでに他のエンジニアが開発したFX自動売買EAやカスタムインジケーターのコードを読んで、どのように記述をするとどのように動くのかを確認しましょう。
1から作成するのではなく、他の人が作成したものをカスタマイズするのもおすすめです。
以下にFX自動売買EAのサンプルコードを記載します。内容を理解できるか確認してみてくださいね。
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// Initialization code here
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Deinitialization code here
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// Get current price
double currentPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);
// Calculate the moving average
int period = 14; // 14 periods for example
double ma = iMA(_Symbol, PERIOD_M1, period, 0, MODE_SMA, PRICE_CLOSE, 0);
// Buy condition: If current price is greater than moving average
if(currentPrice > ma)
{
OrderSend(_Symbol, OP_BUY, 0.1, currentPrice, 3, 0, 0, "Buy Order", 0, clrNONE);
}
// Sell condition: If current price is less than moving average
if(currentPrice < ma)
{
OrderSend(_Symbol, OP_SELL, 0.1, currentPrice, 3, 0, 0, "Sell Order", 0, clrNONE);
}
}
//+------------------------------------------------------------------+
このコードは移動平均線を用いて買い(BUY)と売り(SELL)のシグナルを生成しています。
リスク管理、ストップロス、テイクプロフィット、スリッページ、スプレッドなどを考慮に入れていないので、実際に利用する場合にはもっと複雑なコードになります。
EAやカスタムインジケーターを作成してみる
サンプルコードを読んで仕組みを理解したら、EAやカスタムインジケーターを作成してみましょう。
以下は、移動平行線を描画するMQL4カスタムインジケーターのサンプルコードです。
//+------------------------------------------------------------------+
//| TestSMA.mq4 |
//| Copyright 2023, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2023 John Doe"
#property link "https://www.example.com"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue
//--- indicator buffer(s)
double smaBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// Indicator buffer
SetIndexBuffer(0, smaBuffer);
SetIndexLabel(0, "SMA");
// Name
IndicatorShortName("Simple Moving Average (SMA)");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[])
{
int period = 14; // 14 periods for the SMA
if(rates_total < period)
return(0);
int begin = period - 1;
int i;
// Calculating the SMA
for(i = 0; i < rates_total - begin; i++)
{
double sum = 0.0;
for(int j = i; j < i + period; j++)
{
sum += close[j];
}
smaBuffer[i] = sum / period;
}
return(rates_total);
}
//+------------------------------------------------------------------+
このコードをコピーしてMetaEditorに貼り付け・コンパイルした後にMT4で実際に利用してみてください。
バックテストと最適化
EAやカスタムインジケーターの作成が完了したら、バックテストを行いましょう。
想定通りの成果が出なかった場合は、パラメーターの調整を行ってください。
MQL4を学び続ける
MQL4に新しい関数や機能が追加された場合は、それを活用する方法を学びましょう。
MQL4に限ったことではないですが、プログラミング言語を学習するときは学び続けることが大切です。
MQL4言語を学習している間に利用したい自動売買
MQL4言語を学習している間に利用したい自動売買は以下の通りです。
- Lh
- Lfree
それぞれについて解説します。
Lh | 手堅く利益を積み上げたい人におすすめ
LhはAUD/NZDが2014年から現在までレンジを形成していることを利用して、レンジ内でハーフトラリピ手法をするEAです。
手堅く利益を積み上げたい人におすすめのEAとなっています。
トラリピの手法上、含み損を必ず抱えることになりますが、月利は5%〜20%で平均すると月利10%が期待できます。
30万円を投資したら1ヶ月で36万円になる可能性があるってことだね!
Lhがおすすめな人
- 利益が出るまで時間がかかっても待てる人
- 30万円程度の余剰資金がある人
- EAを放置して利益を出したい人
Lhがおすすめできない人
- こまめに利益を出金したい人
- 含み損が発生することに耐えられない人
Lhのバックテストの結果は以下の通りです。
手堅く利益を積み重ねるEAとなっていますが、設定を変更すればハイリスクハイリターンなEAにカスタマイズすることもできます。
以下のリンクから無料でダウンロードできますが、稼働させるためにはこのリンクからXMの口座開設が必要です。
XMでの口座開設とLhのダウンロードが完了したら、こちらのフォームからご連絡ください。EAの有効化とEAの設定方法を記載したマニュアルを送信します。
Lfree | 短期間で大きな利益がほしい人におすすめ
Lhは破綻するリスクがありますが、短期間で大きな利益を狙えるEAです。
月利は破綻〜100%で平均すると月利20%が期待できます。
30万円を投資したら1ヶ月で倍の60万円になる可能性があるってことだね!
Lfreeがおすすめな人
- 短期間で利益を出したい人
- 余剰資金が少ない人
- 破綻してもいいから大きな利益がほしい人
Lhがおすすめできない人
- 破綻リスクを許容できない人
- コツコツ利益を積み重ねたい人
Lfreeのバックテストの結果は以下の通りです。
以下のリンクから無料でダウンロードできますが、稼働させるためにはこのリンクからXMの口座開設が必要です。
XMでの口座開設とLhのダウンロードが完了したら、こちらのフォームからご連絡ください。EAの有効化とEAの設定方法を記載したマニュアルを送信します。
自動売買を稼働させるときはVPSを利用しよう
自分のパソコンを24時間稼働させてFX自動売買を利用すると、パソコンの寿命が短くなってしまいます。
そのため、自動売買ツール(EA)を稼働させるときには、VPSの利用がおすすめです。
本サイトでは、FXトレーダーからも人気があるエイブルネットのVPSを利用することをおすすめしています。
Windowsパソコンで稼働させることができるWinプランは、初期費用0円で月額1,265円から利用できます。
FX自動売買の想定外のバグや不具合を防ぐためにも、VPSの契約をするようにしてください。
MQL言語の勉強方法まとめ
本記事ではMQL4言語の学習方法と学習ロードマップについて解説しました。
FX自動売買EAやカスタムインジケーターを自作できるように学習を進めましょう。