MQL4MQL5 EA(エキスパートアドバイザー) EA の基本・安全対策
EA に有効期限を付けたい
結論:期限の日時を D'2026.12.31 23:59' のように書いておき、TimeCurrent() が期限を過ぎていたら動かないようにします。
考え方
体験版の EA などに有効期限を付ける例です。datetime 型の定数は D'年.月.日 時:分' の形で書けます。OnInit() で起動を止め、さらに OnTick() でも期限を確認して、期限を過ぎたら新規注文をしないようにします。
- 期限の日時を datetime 型の定数で書く
- OnInit() で期限を過ぎていれば INIT_FAILED を返す
- 動いている途中で期限を過ぎた場合のために、OnTick() でも確認する
そのまま使えるコード
MetaEditor の「新規作成」で「エキスパートアドバイザ(テンプレート)」を選び、できたファイルの中身をすべてこのコードに置き換えてコンパイル(F7)します。ファイルは Experts フォルダに保存され、ナビゲーターからチャートにドラッグして使います。
MQL4・MQL5 共通
#property strict
// 有効期限付きの EA のひな形
const datetime EXPIRY = D'2026.12.31 23:59'; // 有効期限(サーバー時刻)
bool IsExpired()
{
return TimeCurrent() > EXPIRY;
}
int OnInit()
{
if(IsExpired())
{
Alert("この EA の有効期限(", TimeToString(EXPIRY), ")が過ぎています");
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
void OnTick()
{
if(IsExpired())
{
Comment("有効期限切れのため停止中");
return;
}
// ここに売買の処理を書く
}MT4 版・MT5 版とも MetaEditor でコンパイル(エラー・警告なし)を確認済みです。実際の口座で使う前に、デモ口座やストラテジーテスターで動作を確かめてください。
カスタマイズのポイント
- バックテストでも期限は判定されます(テスト中の日時で判定)。過去の期間のテストには影響しません。
注意点
- TimeCurrent() はサーバー時刻なので、日本時間とは数時間ずれます。












