📘 MQL4 システム変数(完全解説)
MQL4には「配列型の変数」「定数値の変数」「口座・環境情報を返す関数」の3種類があります。
これらをすべて理解すれば、EAやインジケータの情報取得は完璧です。
1️⃣ ローソク足データ(価格・時間・出来高)
チャート上の値動きを取得するための基本データ。
変数 | 型 | 説明 |
---|---|---|
Open[] | double配列 | 各バーの始値 |
High[] | double配列 | 各バーの高値 |
Low[] | double配列 | 各バーの安値 |
Close[] | double配列 | 各バーの終値 |
Volume[] | int配列 | 各バーのティック数 |
Time[] | datetime配列 | 各バーの開始時間 |
🔹 例:
double current_close = Close[0]; // 現在足の終値
double prev_high = High[1]; // 1本前の高値
datetime bar_time = Time[0]; // 現在足の時間
👉 EAで売買シグナルを出すとき、ほぼ必ず使います。
2️⃣ チャート関連のシステム変数
現在のチャート環境を表す変数。
変数 | 型 | 説明 |
---|---|---|
Digits | int | 通貨ペアの小数点以下の桁数(例:USDJPY=3, EURUSD=5) |
Point | double | 最小価格単位(= 1pipではなく「1ポイント」) |
Symbol() | string | 現在のチャート銘柄(例:”USDJPY”) |
Period() | int | 現在の時間足(例:M1=1, H1=60, D1=1440) |
🔹 例:
Print("通貨ペア: ", Symbol());
Print("桁数: ", Digits, " Point値: ", Point);
Print("時間足: ", Period());
👉 ロジックをマルチタイムフレームやマルチ通貨対応にする場合に必須。
3️⃣ 口座関連のシステム関数
取引口座の状態を取得。
関数 | 型 | 説明 |
---|---|---|
AccountBalance() | double | 口座残高 |
AccountEquity() | double | 有効証拠金 |
AccountFreeMargin() | double | 余剰証拠金 |
AccountMargin() | double | 使用中の証拠金 |
AccountNumber() | int | 口座番号 |
AccountName() | string | 口座名義 |
AccountCompany() | string | ブローカー名 |
AccountCurrency() | string | 口座通貨(例:JPY, USD) |
🔹 例:
Print("残高: ", AccountBalance());
Print("有効証拠金: ", AccountEquity());
Print("余剰証拠金: ", AccountFreeMargin());
Print("口座名義: ", AccountName(), " (", AccountNumber(), ")");
👉 リスク管理や、証拠金維持率の計算に利用。
4️⃣ 時間関連のシステム関数
サーバーやローカルの時間を取得。
関数 | 型 | 説明 |
---|---|---|
TimeCurrent() | datetime | サーバーの現在時刻 |
TimeLocal() | datetime | PC(ローカル)の現在時刻 |
TimeGMT() | datetime | GMT基準の現在時刻 |
🔹 例:
Print("サーバー時間: ", TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS));
Print("ローカル時間: ", TimeToStr(TimeLocal(), TIME_DATE|TIME_SECONDS));
Print("GMT時間: ", TimeToStr(TimeGMT(), TIME_DATE|TIME_SECONDS));
👉 ニュース回避ロジック、時間フィルター付きEAなどで活躍。
5️⃣ 注文関連(トレード環境)
オーダー情報やサーバーの最小条件を取得。
関数/変数 | 型 | 説明 |
---|---|---|
OrdersTotal() | int | 現在の注文数(保有ポジション+指値注文) |
OrderSelect() | bool | 注文情報を選択する関数 |
OrderType() | int | 選択した注文の種類(BUY/SELL/指値など) |
OrderLots() | double | ロット数 |
OrderProfit() | double | 利益額 |
MarketInfo(Symbol(), MODE_MINLOT) | double | 最小ロット |
MarketInfo(Symbol(), MODE_SPREAD) | int | スプレッド |
🔹 例:
int total = OrdersTotal();
for(int i=0; i<total; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
Print("注文種類: ", OrderType(), " ロット: ", OrderLots(), " 損益: ", OrderProfit());
}
👉 EAでポジション管理やトレール機能を作るときに必須。
6️⃣ 環境関連の変数・関数
端末やプラットフォームに関する情報。
関数/変数 | 型 | 説明 |
---|---|---|
TerminalInfoString(TERMINAL_LANGUAGE) | string | MT4の言語 |
TerminalInfoInteger(TERMINAL_BUILD) | int | ビルド番号 |
IsTesting() | bool | ストラテジーテスター実行中か |
IsDemo() | bool | デモ口座か |
IsLive() | bool | リアル口座か |
✅ まとめ
- ローソク足データ → 売買ロジックの基本(
Open[]
,Close[]
など) - チャート情報 → 通貨ペア・時間足・桁数(
Symbol()
,Period()
,Digits
) - 口座情報 → 残高・証拠金管理(
AccountBalance()
,AccountEquity()
) - 時間情報 → ニュース回避・時間フィルター(
TimeCurrent()
など) - 注文情報 → ポジション管理・リスク制御(
OrderSelect()
,OrderLots()
) - 環境情報 → テスターやデモ・リアルの判定(
IsTesting()
,IsLive()
)
コメント