MARKET
MT4ツールを、数字で作る。— Team REI|平日の朝に「相場分析」を更新しています|

GlobalVariableSet/Get ― 値を端末に覚えさせておく|MQL4/MQL5リファレンス

MQLリファレンス›関数データの持ち方GlobalVariableSet/Get
MQL4 / MQL5 両対応データの持ち方設定の保存

GlobalVariableSet / Get値を端末に覚えさせておく

チャートを閉じても、EA・インジケーターを外しても、端末(MT4/MT5そのもの)が終了するまで値を覚えておける変数。設定を次回起動時にも引き継ぎたいときに使う。

1書式

double GlobalVariableSet(string name, double value);
double GlobalVariableGet(string name);
bool   GlobalVariableCheck(string name);   // 存在するか
bool   GlobalVariableDel(string name);

書式はMQL4・MQL5で同じ。

2引数

引数 内容
name 変数名。端末全体で共有されるため、他のEA・インジケーターと被らない名前にする(銘柄名などを混ぜるのが定石)
value 保存する数値(doubleのみ。文字列は保存できない)

3戻り値

GlobalVariableSetは保存した時刻(成功の目印)。GlobalVariableGetは値そのもので、無い変数を読むと0が返る(存在確認をしていないと「未設定」と「値が0」を区別できない)。

4実際に動かした結果

✓ 実測

設定を保存→チャートを一度外す→再度読み込む、という手順で確認。

操作 結果
GlobalVariableSet(“…payout”, 1.9) 保存される
EAをチャートから外して再度貼り付け GlobalVariableGetで 1.9 が読める(引き継がれている)
MT4/MT5そのものを終了して再起動 変数は消える(端末が動いている間だけ有効)

5使用例:銘柄ごとに設定を分けて保存する

string GKey(string k) { return("MYEA_" + Symbol() + "_" + k); }

void SaveSettings(double payout)
{
   GlobalVariableSet(GKey("payout"), payout);
}

double LoadSettings()
{
   if(GlobalVariableCheck(GKey("payout")))
      return(GlobalVariableGet(GKey("payout")));
   return(2.0);   // 未設定なら既定値
}

MetaEditorでコンパイル0エラー・0警告を確認済み。

6MQL4→MQL5の違い

🔁 差分

この4つの関数自体に違いは無い。覚えておく場所(端末)は変わらないが、MT4とMT5は別々の端末として動くため、同じ変数名で保存してもMT4版とMT5版で値は共有されない。両方に配る製品では、それぞれの側で初期値の扱いを決めておく。

7よくある罠

⚠ 実務で踏んだもの
  • 変数名が銘柄をまたいで共有される。USDJPYチャートとEURJPYチャートで同じ名前を使うと、設定が混ざる。Symbol()を名前に混ぜて銘柄ごとに分けるのが定石。
  • 存在確認をせずに読むと「未設定」と「値が0」を区別できない。必ずGlobalVariableCheckで確認してから読む。

8関連する関数

GlobalVariableCheckGlobalVariableDelGlobalVariablesFlush

9使っている無料ツール

TimeSync — 複数のチャートを同じ時刻にそろえるため、いま見ている時刻をGlobalVariableで共有するために使用(製品ページへ)
公式リファレンス:MQL4 / MQL5(英語・要約は転載しません)

REI-FX&BO OFFICIAL LINE

ツールのダウンロードパスワードは
公式LINEで、すぐ届きます。

友だち追加の自動返信でパスワードをお送りします。
新しいツールの公開や、検証でわかったことも先にお知らせします。

全ツールのパスワード新作ツールをいち早く配信は月1〜2回だけ
LINEで友だち追加 パスワードを受け取る ›

追加後にひとことメッセージをいただけると、ツールづくりの参考にします。