GlobalVariableSet関数|グローバル変数の設定

執筆者

佐川直弘(株式会社トリロジー取締役)

MetaTrader4(MT4)では、システムグローバル変数を利用することで、作成したシステム(エキスパートアドバイザー、インディケーターなど)の間でグローバル変数を共有することができます。この記事では、システムグローバル変数を設定する方法について、初心者向けにわかりやすく解説します。

GlobalVariableSet関数|システムグローバル変数を設定する方法

システムグローバル変数を設定するには、`GlobalVariableSet`関数を使用します。この関数を使うことで、グローバル変数を新規作成または既存の変数を更新することができます。

以下は、`GlobalVariableSet`関数の基本的な仕様です。

GlobalVariableSet関数の仕様
datetime GlobalVariableSet(
    string name,  // グローバル変数名
    double value  // 値
);

この関数は、グローバル変数を設定します。設定に成功した場合、設定した日時が戻り値として返されます。失敗した場合は `0` が返されます。エラーの詳細情報は `GetLastError` 関数を使用して取得できます。

以下は、`GlobalVariableSet`関数を使ってグローバル変数を設定するサンプルコードです。

グローバル変数設定の例
if(GlobalVariableSet(“BarsCount", Bars) == 0) {
    return(false);
}

このサンプルコードでは、`GlobalVariableSet`関数を使って “BarsCount" という名前のグローバル変数に `Bars` の値を設定しています。

GlobalVariableSetOnCondition関数|条件付きでグローバル変数を設定する方法

特定の条件が満たされた場合にのみグローバル変数を設定するには、`GlobalVariableSetOnCondition`関数を使用します。この関数は、現在の値が指定の条件値に一致した場合にのみグローバル変数を設定します。

以下は、`GlobalVariableSetOnCondition`関数の基本的な仕様です。

GlobalVariableSetOnCondition関数の仕様
bool GlobalVariableSetOnCondition(
    string name,      // グローバル変数名
    double value,     // 値
    double check_value // 条件値
);

この関数は、現在の値が条件に合った場合にのみグローバル変数を設定します。設定に成功した場合は `true` を、失敗した場合は `false` を返します。エラーの詳細情報は `GetLastError` 関数を使用して取得できます。

以下は、`GlobalVariableSetOnCondition`関数を使って条件付きでグローバル変数を設定するサンプルコードです。

条件付きグローバル変数設定の例
int init() { 
  //—- グローバル変数を作成する 
  GlobalVariableSet(“MY_DATAFILE_SEM", 0); 
  //… 

int start() { 
  //—- 共通リソースのロックを試みる 
  while (!IsStopped()) { 
    //—- ロックの試行 
    if (GlobalVariableSetOnCondition(“MY_DATAFILE_SEM", 1, 0) == true)  break; 
    //—- 変数が削除された可能性があるか? 
    if (GetLastError() == ERR_GLOBAL_VARIABLE_NOT_FOUND) return (0); 
    //—- 休止 
    Sleep(500); 
  } 
  //—- リソースがロックされました 
  // … 何らかの処理 
  //—- リソースのロックを解除 
  GlobalVariableSet(“MY_DATAFILE_SEM", 0); }

このサンプルコードでは、`GlobalVariableSetOnCondition`関数を使って、"DATAFILE_SEM" という名前のグローバル変数を条件付きで設定しています。

システムグローバル変数を設定する機能は、以下のような場合に役立ちます。

よく使われるケース
– 複数のエキスパートアドバイザーやインディケーター間でデータを共有したいとき
– プログラム間で連携を行いたいとき
– 特定の条件が満たされた場合にのみ値を更新したいとき

これらのケースで、`GlobalVariableSet`関数および`GlobalVariableSetOnCondition`関数を使うことで、効率的にシステムグローバル変数を設定することができます。

まとめ

MetaTrader4の`GlobalVariableSet`関数と`GlobalVariableSetOnCondition`関数を使えば、システムグローバル変数を簡単に設定できます。これにより、トレーダーはシステム間でデータを共有しやすくなり、取引の精度を向上させることができます。初心者の方も、この記事を参考にぜひシステムグローバル変数の設定に挑戦してみてください。

MQL4

Posted by 佐川直弘