今回はMT4の自動売買用EAサンプルソース(FX用)を、プログラミング初心者の方向けに解説しています。
はじめに
「このEA、いつの間にか他の人に使われていた…」
そんな経験はありませんか?MT4のEAを配布する際、「使用できる期間」を制限できれば、不正コピーの防止や体験版配布にも大いに役立ちます。
本記事では、MQL4で簡単に実装できる「利用期間制限関数」を、初心者でも理解しやすいようにコード付きで解説します。コピー&ペーストですぐに使えるサンプルも紹介するので、ぜひご活用ください!
利用期間制限の関数サンプル(MQL4)
以下サンプルソース(MQL4)の関数になります。そのままコピペでお使いください。
サンプルソース
bool CheckExpiration()
{
datetime limit = D'2025.12.31'; // ← 有効期限を設定
if (TimeCurrent() > limit)
{
Print("このEAの利用期間は終了しました。");
return false;
}
return true;
}
3行目に有効期限をセットしています。この期限を過ぎるとEAが実行されない(使えない)ようになるといった感じですね。
関数の解説
とてもシンプルなつくりで、引数は今回はありません。
EAが使える場合はTrueで使えない場合はFalseが返ってきます。
EA内での使用方法(OnInitへの実装例)
具体的な使用例としては、EAが起動された際に呼び出されるOnInit()で問題ありません。
int OnInit(){
if (CheckExpiration()==false){ //有効期限チェック関数
// 自動売買を止める
return(INIT_FAILED);
}
// 他の初期化処理
return(INIT_SUCCEEDED);
}
void OnTick(){
~~~~
}
//有効期限チェック関数
bool CheckExpiration()
{
datetime limit = D'2024.12.31'; // ← 有効期限を設定
if (TimeCurrent() > limit)
{
Print("このEAの利用期間は終了しました。");
return false;
}
return true;
}
これだけでOKです。

こんな感じでMT4の操作履歴に1文が表示されEAが使えないようになっています。
画面上に利用期限終了のメッセージを表示する方法
操作履歴だけだと、利用者が気づかず問い合わせが来る可能性があるのでもっとわかりやすくチャート上に表示する事も勿論可能です。
int OnInit(){
//ラベルオブジェクトの作成
ObjectCreate(0, "objKigen", OBJ_LABEL, 0, 0, 0);
// 座標のアンカー位置
ObjectSetInteger(0, "objKigen" ,OBJPROP_ANCHOR, ANCHOR_LEFT_LOWER);
// X位置
ObjectSetInteger(0, "objKigen", OBJPROP_XDISTANCE, 50);
// Y位置
ObjectSetInteger(0, "objKigen", OBJPROP_YDISTANCE, 50);
// 色
ObjectSetInteger(0, "objKigen", OBJPROP_COLOR, clrRed);
// 読み取り専用
ObjectSetInteger(0, "objKigen", OBJPROP_READONLY, true);
// 選択不可
ObjectSetInteger(0, "objKigen", OBJPROP_SELECTABLE, false);
// フォント名
ObjectSetString(0, "objKigen", OBJPROP_FONT, "MS ゴシック");
// フォントサイズ
ObjectSetInteger(0, "objKigen", OBJPROP_FONTSIZE, 18);
if (CheckExpiration()==false){ //有効期限チェック関数
ObjectSetString(0, "objKigen", OBJPROP_TEXT,"このEAの利用期間は終了しました。");
return(INIT_FAILED);
}
// 他の初期化処理
return(INIT_SUCCEEDED);
}
void OnTick(){
~~~~
}
//有効期限チェック関数
bool CheckExpiration()
{
datetime limit = D'2024.12.31'; // ← 有効期限を設定
if (TimeCurrent() > limit)
{
Print("このEAの利用期間は終了しました。");
return false;
}
return true;
}

これでEAが使えなくなった事が利用者にもわかりやすくなりますね!
注意事項とまとめ
以上、『MT4のEAに利用期間制限をつける方法』でした。本関数をご使用の際は、動作確認等を行い自己責任でお使いください。
EAの利用期間を設定することで、不正な再配布や古いバージョンの使用を防げます。体験(デモ)版や限定公開用EAにも非常に有効です。特定日以降に機能を停止させたい場合は、今回紹介したような「利用期間制限関数」をぜひ活用してみてください。ユーザーにわかりやすいエラーメッセージをチャート上に表示することで、トラブル回避にもつながります。
※ EAのサンプルソース一覧表へ
コメント