
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の作成に便利な色々な関数が用意されています。各種テクニカルを取得したり、取引を行うには予め用意されている関数を呼び出します。詳細は英語ですがエディターのヘルプで確認できます。日本語だったら自作しちゃお~のリファレンスがおすすめです。