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使っている無料ツール
REI_FX_TokyoFix — ペイアウト倍率などの設定を、チャートを外しても次回に引き継ぐために使用(製品ページへ)
MORNING BRIEF平日 毎朝7時までに更新
今日はどこを見ればいいか。
ドル円とユーロドルの主要ライン・予想高値安値を、平日の朝に図1枚にまとめています。
朝刊を見る→9/25 8:27 時点ドル円158.78▼-7 pipsドル円 予想レンジ158.41 〜 159.23ドル円 上の節目158.90▲ドル円 下の節目157.80▼ユーロドル1.1378▼-2 pipsユーロドル 予想レンジ1.1351 〜 1.1408ユーロドル 上の節目1.1403▲ユーロドル 下の節目1.1359▼きょうの指標重要指標なし