【2025.06.20】★21:30 アメリカ・フィラデルフィア連銀景況指数06月

MT4でEA配布時に使える口座縛り関数|初心者向け解説

記事内に商品プロモーションを含む場合があります
スポンサーリンク

今回はMT4の自動売買用EAサンプルソース(FX用)を、プログラミング初心者の方向けに解説しています。

はじめに

EAを作って配布する際などに、『知らない人に使われたくない』と思う事ありますよね。今回は、不特定多数ではなくある一定のユーザーに向けたEA配布を実現するため、簡単に実装できる口座縛り関数をご紹介します。

基本的な口座縛りの関数サンプル(MQL4)

以下サンプルソース(MQL4)の関数になります。そのままコピペでお使いください。

サンプルソース

bool CheckAccountNumber()
{
    int allowedAccounts[] = {12345678, 87654321, 24682468};   // ← 許可する口座番号をここに入力

    for (int i = 0; i < ArraySize(allowedAccounts); i++)
    {
        if (AccountNumber() == allowedAccounts[i])
            return true;
    }

    Print("このEAは現在の口座番号では使用できません。");
    return false;
}

こんな感じで、許可する口座番号を追記していきましょう。for文で利用可能な口座番号をチェックしています。関数:AccountNumber()を使うことでEA使用者の口座番号を取得できるので覚えておきましょう。

スポンサーリンク

関数の解説

とてもシンプルなつくりで、引数は今回はありません。

EAが使える場合はTrueで使えない場合はFalseが返ってきます。

EA内での使用方法(OnInitへの実装例)

具体的な使用例としては、EAが起動された際に呼び出されるOnInit()で問題ありません。

int OnInit(){
    if (!CheckAccountNumber())     //口座チェック(口座縛り関数)
    {
        // 自動売買を止める
        return(INIT_FAILED);
    }

    // 他の初期化処理
    return(INIT_SUCCEEDED);
}

void OnTick(){
~~~~

}

//口座縛り関数
bool CheckAccountNumber(){
    int allowedAccounts[] = {123, 456, 789, 77777};   // ← 許可する口座番号をここに入力

    for (int i = 0; i < ArraySize(allowedAccounts); i++)
    {
        if (AccountNumber() == allowedAccounts[i])
            return true;
    }

    Print("このEAは現在の口座番号では使用できません。");
    return false;
}

これで口座番号が「123,456,789,77777」の人だけこのEAが使えるという感じになりますね。

より厳密な制限をかける応用方法

ブローカー名との組み合わせ

口座番号と「ブローカー名 (AccountCompany() 」を組み合わせて制限したりもできます。こんな感じです。

bool CheckAccount()
{
    if ((AccountNumber() == 12345678 && AccountCompany() == "OANDA Corporation") ||
        (AccountNumber() == 77777 && AccountCompany() == "Goldenway Japan Co., Ltd."))
    {
        return true;
    }

    Print("口座またはブローカーが一致しません。");
    return false;
}

さらに強化するアイディア

他にも、以下のような方法がありますが今回は詳細は割愛します。

  • 口座番号の下4桁からパスワードを自動生成し、パラメータ設定に入力
  • 口座番号毎にパスワードを設定し、パラメータ設定に入力
  • PHPなどでサーバー側スクリプトを用意して、口座番号をチェック(上級者向け)

注意事項とまとめ

以上、『MT4でEA配布時に使える口座縛り関数』でした。本関数をご使用の際は、動作確認等を行い自己責任でお使いください。

口座縛りは、EAの配布先を限定するうえで非常に有効な手段です。ただし、それだけでは完全ではありません。できるだけ複数条件を組み合わせた認証を行い、誤動作や不正利用のリスクを最小限に抑えましょう。開発者として、安心して使ってもらえるEAを提供するためにも、事前のテストと明確な使用条件の提示が大切です。



※ EAのサンプルソース一覧表へ

コメント