【MQL4】AccountNumberを使ったEAの口座制限・認証方法|MT4配布用サンプルコード

スーツ姿のデグーマウスがMT4 EAのコードを指しながら解説しているイラスト。ぷろぐらむFXのデフォルトアイキャッチ。
EAサンプル・ノウハウ
記事内に商品プロモーションを含む場合があります
スポンサーリンク

EAを作って配布する際、「特定のユーザーだけに使わせたい」 「第三者に無断利用されたくない」と考えたことはありませんか?

MT4(MQL4)では AccountNumber() を利用することで、 EAの使用を特定の口座に限定する「口座制限(認証)」を実装できます。

本記事では、EA配布時の基本的なセキュリティ対策として、 AccountNumber() を使ったシンプルな口座制限関数を プログラミング初心者の方にも分かるように解説します。

実運用を保証するものではなく、 EA開発・配布時の仕組み理解や実装例としての技術解説を目的とした内容です。

本記事は、EA開発者向けの技術解説を目的とした内容です。

AccountNumberを使った基本的な口座制限サンプル(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などでサーバー側スクリプトを用意して、口座番号をチェック(上級者向け)

注意事項とまとめ

以上、『AccountNumberを使ったEAの口座制限・認証方法』でした。本関数をご使用の際は、動作確認等を行い自己責任でお使いください。

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



✅ 今回のロジックをベースにしたEAサンプルも多数公開中

今回紹介したようなEAの売買ロジック・考え方をベースに、
当サイトではさまざまなFX自動売買EAのサンプルコードを公開しています。

ロジックの違いや設計の考え方を比較しながら、
自分に合ったEA構成を探したい方はぜひチェックしてみてください。


📊 EA運用・検証フェーズに進みたい方へ

今回のような仕組みを理解したうえで、
「実際にどのEAが安定しているのか」、「検証データではどんな差が出ているのか」
を確認したい方は、以下の記事も参考になります。


EA開発初心者向けに、今後も実践的に使えるMQL4関数や実装例を紹介していきます。
気になる機能やロジックがあれば、用途別に整理した関連記事もぜひあわせてご覧ください。

コメント

タイトルとURLをコピーしました