【MQL5】TerminalInfoString関数の使い方と自動売買実装コード

1. TerminalInfoString関数の概要と実務での活用法

MQL5のTerminalInfoStringは、現在EA(エキスパートアドバイザー)が動作しているMetaTrader 5(MT5)端末そのものに関する情報を文字列(string型)で取得するための関数です。

実務レベルの開発において、この関数は「環境の特定」と「ファイル操作」の2点で非常に重宝されます。初心者が特につまずきやすいのが、「EAで作成したログやデータがどこに保存されているかわからない」という問題です。MT5はインストール先とは別に、ユーザーデータ用の隠しフォルダ(データフォルダ)を使用するため、TERMINAL_DATA_PATHを取得して正しいパスを把握することは、デバッグやデータ分析において必須の作業となります。

また、自作したEAを他者に配布したり、複数の証券会社(ブローカー)で運用したりする場合、現在どのブローカーのMT5を使っているかをプログラム側で判別し、ロゴの表示を切り替えたり、特定の環境以外では動作させないといった「環境制限」をかける際にも活用されます。


2. 構文と戻り値

TerminalInfoString関数の構文は非常にシンプルです。

string  TerminalInfoString(
   int  property_id      // プロパティ識別子
   );

パラメーター

引数には、取得したい情報を指定する「プロパティ識別子」を渡します。主な識別子は以下の通りです。

識別子 内容
TERMINAL_LANGUAGE ターミナルの表示言語(例: “Japanese”)
TERMINAL_COMPANY 証券会社の名前
TERMINAL_NAME ターミナルの名前(通常は “MetaTrader 5″)
TERMINAL_PATH MT5がインストールされているフォルダのパス
TERMINAL_DATA_PATH EAやインジケーターが保存されているデータフォルダのパス
TERMINAL_COMMONDATA_PATH 全てのMT5で共通して利用できるデータフォルダのパス

戻り値

指定した識別子に対応する情報をstring型(文字列)で返します。


3. 具体的な使い方・実践サンプルコード

以下のサンプルコードは、EAの初期化時(OnInit)に現在の実行環境をターミナルの「操作履歴」タブに出力するものです。開発中の環境確認用としてそのまま利用できます。

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   // 1. 証券会社名の取得
   string company = TerminalInfoString(TERMINAL_COMPANY);

   // 2. データフォルダのパスを取得(ファイル出力機能などを使う際に重要)
   string dataPath = TerminalInfoString(TERMINAL_DATA_PATH);

   // 3. ターミナルの言語設定を取得
   string language = TerminalInfoString(TERMINAL_LANGUAGE);

   // 取得した情報をログに出力
   Print("--- [環境チェック] ---");
   Print("利用中の証券会社: ", company);
   Print("データフォルダの場所: ", dataPath);
   Print("現在の言語設定: ", language);
   Print("----------------------");

   // 言語が日本語以外の場合に警告を出すなどの応用も可能
   if(language != "Japanese")
   {
      Print("Warning: 日本語以外の環境で動作しています。");
   }

   return(INIT_SUCCEEDED);
}

4. 使用上の注意点とよくあるエラー

1. 似た名前の関数との混同

初心者が最も間違えやすいのが、AccountInfoStringとの混同です。
TerminalInfoString: 「MT5アプリ本体」の情報(インストール先や言語など)
AccountInfoString: 「取引口座」の情報(名義人名やブローカー名など)
「証券会社名」を取得する場合、TERMINAL_COMPANYはMT5のソフト自体の提供元を指し、ACCOUNT_COMPANYはログインしている口座の証券会社を指すことがあります。用途に合わせて使い分ける必要があります。

2. ファイルパスの取り扱い

TERMINAL_DATA_PATHで取得できるパスは、末尾にバックスラッシュ(\)が含まれていません。ファイル操作でパスを結合する際は、dataPath + "\\" + fileName のように区切り文字を正しく補完しないと、ファイルが見つからないエラー(Error 5004)が発生します。

3. 書き込み権限

TERMINAL_PATH(インストールフォルダ)は、通常Windowsのシステム保護下にあるため、EAから直接ファイルを書き込むことはできません。データの保存には必ずTERMINAL_DATA_PATHTERMINAL_COMMONDATA_PATHを使用するようにしてください。


5. 【重要】自動売買における約定スピードと環境の罠

アルゴリズムトレードにおいて、プログラムのロジックと同じくらい重要なのが「実行環境」です。自宅のPCやノートパソコンでEAを稼働させている開発者は多いですが、これはプロの視点から見ると非常に高いリスクを伴います。家庭用インターネット回線は、ブローカーの取引サーバーとの物理的な距離が遠く、ネットワーク遅延(レイテンシ)が数十ミリ秒から数百ミリ秒発生します。このわずかな遅延が、相場急変時のスリッページを引き起こし、本来得られるはずだった利益を削り、あるいは損失を拡大させる致命的な要因となります。

極限まで約定スピードを高め、安定した利益を積み上げるためには、ブローカーのサーバーに近いデータセンターに設置された「専用のVPS(仮想専用サーバー)」の利用が不可欠です。24時間365日の安定稼働はもちろん、超低レイテンシ環境で注文を即座にマーケットへ届けることは、現代のFXシストレにおける最低限のインフラ投資と言えます。ネットワーク遅延という「目に見えないコスト」で損をしないよう、信頼性の高いVPS環境を構築することを強く推奨します。

💡 この記事の内容を実運用で活かすには?

この記事の内容を実運用で活かすには、正しい環境が必要です。
特にVPSを使わないと、このロジックは再現できません。

コメント

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