Global変数とは?
Global変数は、クライアント端末で実行される全てのMQL5プログラムからアクセス可能な変数であり、エキスパートアドバイザーやカスタムインジケ-タ間でデータを共有するためのメカニズムを提供します。
Global変数の持続性について
Global変数は、最後にアクセスされてから4週間クライアント端末(=ユーザ個人のパソコン)に保存された後に自動的に削除されます。
この期間が経過すると、Global変数は自動的に削除されるため、古いデータが永遠に残ることはありません。これにより、メモリリソースの適切な管理が保証されます。
Global変数のアクセスと利用について
Global変数は任意のMQL5プログラムからにアクセスすることができます。
これにより、一つのEAが生成したデータを別のEAが利用したり、同一のEAが異なるチャートでのデータを共有するなど、多様なシナリオに対応することが可能になります。
たとえば、一つのEAが市場のトレンドを分析してその情報をGlobal変数に保存し、別のEAがそのトレンド情報を利用してトレード戦略を調整する、といった利用方法が可能となります。
Global変数とグローバル変数との違いに注意
今回の記事で紹介しているGlobal変数はMQL5 EA講座 第27回「グローバル変数について」で取り上げたグローバル変数とは別物になります。
グローバル変数はグローバルスコープ(関数の外の領域)に作られた(=宣言された)変数の事を指しますが、Global変数は、冒頭にも書いた通りクライアント端末で実行される全てのMQL5プログラムからアクセス可能な変数を意味します。
当サイトではMT5をシャットダウン後も、一定期間値の記憶を保つことができる変数をアルファベット表記のGlobal変数、関数の外(=グローバル領域)に作られた(=宣言された)変数のことをカタカナ表記のグローバル変数として区別したいと思います。
Global変数の作り方
MQL5においてGlobal変数を作成するには、はMT5に組み込まれているいくつかの専用の関数を使用します。以下に、Global変数を作成するための基本的なステップを示します。
Global変数の作成と設定
GlobalVariableSet関数を使用して新しいGlobal変数を作成し、それに値を設定します。GlobalVariableSet関数は変数名と値を引数として受け取ります。
もし指定したGlobal変数が存在しなければ新しくGlobal変数が作成され、存在していればGlobal変数の値が更新されます。
double value = 123.456; // 保存したい値
bool success = GlobalVariableSet("MyGlobalVar", value);
if (!success) {
// エラー処理
}
Global変数の値取得
GlobalVariableGet関数を使用してGlobal変数の値を取得します。この関数は変数名を引数として受け取ります。
double value;
bool success = GlobalVariableGet("MyGlobalVar", value);
if (!success) {
// エラー処理
}
Global変数の存在チェック
GlobalVariableCheck関数を使用して、特定のGlobal変数が存在するかどうかをチェックします。この関数は変数名を引数として受け取り、変数が存在するかどうかを真偽値で返します。
bool exists = GlobalVariableCheck("MyGlobalVar");
if (!exists) {
// 変数が存在しない場合の処理
}
GlobalVariableDel関数を使用してGlobal変数を削除します。この関数は変数名を引数として受け取ります。
bool success = GlobalVariableDel("MyGlobalVar");
if (!success) {
// エラー処理
}
MT5操作によるGlobal変数の確認方法
Global変数の存在を確認する方法は、GlobalVariableGet関数を使ったスクリプトでも可能ですが、MT5の操作でも確認可能です。操作手順は以下の通りです。
- MT5を開く
- メニューバーから「ツール」を選択
- 「グローバル変数」メニューをクリック
これで「グローバル変数」ウィンドウが開き、現在クライアント端末に保存されている全てのGlobal変数のリストが表示されます。ここで、変数名、値、最終更新時間などを確認することができます。
Global変数について、まとめ
Global変数は、MQL5プログラミングにおけるデータ共有と持続性を提供する機能です。
適切に使用することで、異なるプログラム間での協調動作や情報の一貫性を保つことができ、より複雑なトレーディング戦略の実現を助けます。ただし、Global変数の使用には慎重な設計が必要であり、プログラム間での意図しない影響を避けるために、変数のスコープと持続性を正しく理解し管理することが重要です。
繰り返しになりますが、「Global変数とグローバル変数との違いに注意」セクションにて言及した、グローバル変数との違いを認識し、混同しないよう注意してください。
<参照>
GlobalVariableSet関数/GlobalVariableCheck関数/GlobalVariableGet関数/GlobalVariableDel関数
————————————————————————————–
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。