
EAとはExpert Advisorの略称です。MT4で自動売買をするプログラムのことです。MT4のチャートに埋め込むことで使います。チャートを複数表示しておけば、複数の通貨でEAを動かすことも可能です。一つのチャートに埋め込めるEAは一つです。同じ通貨で複数のEAを動かしたいなら、チャートを複数追加しましょう。
動作環境
Windows環境が必要です。(linux上でもwineを使えば動くかもしれません)
私は自宅のPCを24時間稼働させています。PCのスペックはそれほど必要ありません。むしろ安定したネットワーク環境が必須です。中古のノートPCとかでも十分です。自宅ではちょっと不安な方はお金はかかりますが、VPSをレンタルしましょう。MT4が使えるVPSなら設定はそれほど難しくありません。
定義済み変数
様々な情報にアクセスするため、あらかじめグローバル変数が定義されています。本来は関数で取得するべきですので、MQL5ではなくなっているものが多いです。変数の値を参照する(読む)だけで、書き換えられません。
変数 | 値 |
_Digits | 価格の小数点以下の桁数 |
_Point | 現在の通貨ペアでの、価格の小数点値 |
_LastError | 直近のエラーコード |
_Period | 現在チャートの時間軸 |
_RandomSeed | 整数の疑似乱数 |
_StopFlag | プログラム停止フラグ |
_Symbol | 現在チャートの通貨ペア名 |
_UninitReason | UnInit理由コード |
Ask | 現在の通貨ペアの買値(最新の売り手の価格) |
Bars | 現在チャートのバー数 |
Bid | 現在の通貨ペアの売値(最新の買い手の価格) |
Close | 現在チャートの各バーの終値配列 |
Digits | 現在の通貨ペアでの、価格の小数点以下の桁数 |
High | 現在チャートの各バーの高値配列 |
Low | 現在チャートの各バーの安値配列 |
Open | 現在チャートの各バーの始値配列 |
Point | 現在の通貨ペアでの、価格の小数点値 |
Time | 現在チャートの各バーの時間配列 |
Volume | 現在チャートの各バーの出来高配列 |
OnTick
EAのプログラムは常に動いているわけではなく、MT4から特定のタイミング(イベント発生)時に決められた関数(イベントハンドラー)がよびだされます。いくつかイベントが用意されていますが、EAの場合のメインはOnTick()です。新しいtickが発生するたびにこの関数が実行されます。tickはチャートの値動きを更新するタイミングだと思ってください。OnTickは引数も戻り値もありません。
書式
void OnTick(void);
例
void OnTick() {
int next = status;
next = current.check();
if (next != status) {
Print("ポジションチェックで状態変化:", status, "→", next);
status = next;
}
current = StatusArray[status];
// 売りシグナルチェック
if ( is_sell_signal() ) {
next = current.sell_signal();
}
// 買いシグナルチェック
if ( is_buy_signal() ) {
next = current.buy_signal();
}
if (next != status) {
Print("シグナルで状態変化:", status, "→", next);
status = next;
}
current = StatusArray[status];
}
関数
EAの作成に便利な色々な関数が用意されています。各種テクニカルを取得したり、取引を行うには予め用意されている関数を呼び出します。詳細は英語ですがエディターのヘルプで確認できます。日本語だったら自作しちゃお~のリファレンスがおすすめです。