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_PATHやTERMINAL_COMMONDATA_PATHを使用するようにしてください。
5. 【重要】自動売買における約定スピードと環境の罠
アルゴリズムトレードにおいて、プログラムのロジックと同じくらい重要なのが「実行環境」です。自宅のPCやノートパソコンでEAを稼働させている開発者は多いですが、これはプロの視点から見ると非常に高いリスクを伴います。家庭用インターネット回線は、ブローカーの取引サーバーとの物理的な距離が遠く、ネットワーク遅延(レイテンシ)が数十ミリ秒から数百ミリ秒発生します。このわずかな遅延が、相場急変時のスリッページを引き起こし、本来得られるはずだった利益を削り、あるいは損失を拡大させる致命的な要因となります。
極限まで約定スピードを高め、安定した利益を積み上げるためには、ブローカーのサーバーに近いデータセンターに設置された「専用のVPS(仮想専用サーバー)」の利用が不可欠です。24時間365日の安定稼働はもちろん、超低レイテンシ環境で注文を即座にマーケットへ届けることは、現代のFXシストレにおける最低限のインフラ投資と言えます。ネットワーク遅延という「目に見えないコスト」で損をしないよう、信頼性の高いVPS環境を構築することを強く推奨します。
💡 この記事の内容を実運用で活かすには?
この記事の内容を実運用で活かすには、正しい環境が必要です。
特にVPSを使わないと、このロジックは再現できません。

コメント