せっかくMT4(MetaTrader4)を使うなら、あなたオリジナルのEA(Expert Advisor)やインジケーターを自作してみませんか!?
初心者向けに、MQL4言語を使ったプログラミングについて解説しています。
今回は、MT4専用のテキストエディタ「MetaEditor」の使い方から始めて、MT4のサンプルEAを使ってEAの基本構造と書き方を解説します。
「プログラミングなんて自分にはとても無理だ」と思われるかもしれませんが、そんなことはありません。
実は超簡単なので、ぜひ挑戦してみましょう♪
MetaEditor の起動
MT4には、EAやインジケーターを書くための専用のテキストエディタ「MetaEditor」が用意されていて、MT4と同時にインストールされています。
まず、この「MetaEditor」を起動します。
テキストエディタとは、基本的にはWindowsの「メモ帳」と同じテキストファイルを扱うソフトウェアなのですが、プログラムの作成・編集・保存により特化したものになっています。
では、MT4の「メタクォーツ言語エディタ」をクリックしましょう。
「Experts」のツリーから「MACD Sample.mq4」をダブルクリックします。
すると、ソースコードが開きます。
それでは、ソースコードを見ながらEAの基本構造と書き方を解説していきます。
//:コメント
1行目から5行目、15行目から17行目など、「//」で始まる行がたくさんあります。
「//」で始まる行は、いわゆるコメントと呼ばれるもので、プログラムでは読み込まれません。
そのため、後で編集するときのためのメモなどを備忘録的に残しておくために使います。
#property:プログラムプロパティ
6行目から7行目は「#property」で始まっています。
「#property」は、EAに関する情報を表示するために使う命令です。プログラムの動作には関係ありません。
例えば、作成者名、作成者のサイトURL、プログラムのバージョン情報など。
情報は、MT4画面左側の「ナビゲーター」からEA名をダブルクリックすればそのEAのサブウィンドウが開きますが、そのバージョン情報タブに表示されます。
input:外部パラメーター
9行目から14行目は「input」で始まっています。
テクニカルインジケーターのパラメーターや、取引ロット数、マジックナンバーなどは、EAの使用者が自由に設定や変更したい数値です。
このような場合、「input」の後にこれらの数値を変数(データを一時的に入れておく箱)として宣言すれば、外部パラメーターとして利用できます。
外部パラメーターの数値は、そのEAのサブウィンドウからユーザーが自由に設定や変更ができます。
void OnTick(void) {}:メイン処理関数
18行目以降の「void OnTick(void){}」(OnTick関数)は、メインプログラムのためのイベント処理関数です。
ここには、EAの中身そのもの、例えば、エントリーやエグジットの条件、新規注文や決済注文の命令などの各種処理を記述します。
OnTick関数は、チャートにレートが配信されるタイミングで実行します。
基本的に、プログラムは、上から順に動作していくので、イベントを起こしたい順番に上から記述していきます。
int OnInit() {}:初期化処理関数
サンプルプログラムに記述はありませんが、MetaEditorで新規作成を選ぶと13行目に出てきます。
「int OnInit() {}」(OnInit関数)は、初期化処理をするためのイベント処理関数で、EAをチャートに適用したときに1度だけ実行します。
記述場所は、OnTick関数の上と決まっています。
なお、OnInit関数を使わない場合は記述不要です。
void OnDeinit() {}:終了処理関数
こちらもサンプルプログラムに記述はありませんが、MetaEditorで新規作成を選ぶと23行目に出てきます。
「void OnDeinit() {}」(OnDeinit関数)は、終了処理をするためのイベント処理関数で、EAをチャートから削除したときに1度だけ実行します。
記述場所は、OnInit関数とOnTick関数の間と決まっています。
なお、OnDeinit関数を使わない場合は記述不要です。
まとめ
今回は、MetaEditorの使い方から始めて、MT4のサンプルEAを使ってEAの基本構造と書き方を解説しました。
EAの自作はけして難しくはありません。
一見難しそうに感じるかもしれませんが、実は超簡単なので、あなたもぜひ挑戦してみましょう♪