システム変数

📘 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️⃣ チャート関連のシステム変数

現在のチャート環境を表す変数。

変数説明
Digitsint通貨ペアの小数点以下の桁数(例:USDJPY=3, EURUSD=5)
Pointdouble最小価格単位(= 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()datetimePC(ローカル)の現在時刻
TimeGMT()datetimeGMT基準の現在時刻

🔹 例:

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)stringMT4の言語
TerminalInfoInteger(TERMINAL_BUILD)intビルド番号
IsTesting()boolストラテジーテスター実行中か
IsDemo()boolデモ口座か
IsLive()boolリアル口座か

✅ まとめ

  • ローソク足データ → 売買ロジックの基本(Open[], Close[] など)
  • チャート情報 → 通貨ペア・時間足・桁数(Symbol(), Period(), Digits
  • 口座情報 → 残高・証拠金管理(AccountBalance(), AccountEquity()
  • 時間情報 → ニュース回避・時間フィルター(TimeCurrent() など)
  • 注文情報 → ポジション管理・リスク制御(OrderSelect(), OrderLots()
  • 環境情報 → テスターやデモ・リアルの判定(IsTesting(), IsLive()

コメント

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