ユーザーが気配値表示に表示している通貨ペアのリストを取得する

ユーザーが気配値表示に表示している通貨ペアのリストを取得する

サムネ
おはようございます。 fx-on.comエンジニアの岩淵です。 今朝の東京は大雪(4cm)ですね。 雪は嫌いななので「南国に会社移転しないかな~」とか考えながら仕事しております。 さて、今日はユーザーが利用中の通貨ペアの一覧を取得する方法です。 EAやインジケーターによっては他通貨ペアのレートを取得したい時があるかと思います。 とくに複利計算などでドル円のレートを取得する場合などが多いですね。 ちなみにここのことです。 このとき取得する通貨ペアがMT4の気配値表示の中に含まれていない場合、正しくレートが取得できずバグの原因になる可能性があります。 もし他通貨ペアのレートをEAの処理内で使用している場合には、プログラム側で気配値表示に存在しているかをチェックし、無ければ警告してあげるのが親切でしょう。

仕様

気配値表示内の通貨ペアのリストを出力する。 パラメータを用意し、通貨ペア名を入力できるようにする。 気配値表示の中にパラメータで設定した通貨ペアが無ければ警告する。

コード

気配値表示内の通貨ペア名は、SymbolName関数で取得できます。 第1引数には上から何番目の通貨ペア名を取得するかを指定します。 0から始まるので、1番上の通貨ペア名を取得するには0を指定します。 上から2番目なら1を指定します。 第2引数にtrueを指定することで気配値表示内の通貨ペア名を取得します。 falseを指定すればブローカーが提供している全通貨ペアの一覧から通貨ペア名を取得することも可能です。 気配値表示内にいくつの通貨ペアが表示されているかはSymbolsTotal関数で取得します。 こちらも引数にtrueを指定することで気配値表示内の通貨ペアの数が取得できます。 falseではブローカーが提供している全通貨ペアの総数になります。 SymbolsTotalで通貨ペアの総数を取得し、その数だけfor文でSymbolName関数を実行する流れです。
#property strict
#property show_inputs

extern string symbol = "EURCHF"; //通貨ペア

void OnStart(){
   bool isCheck = false;
   for(int i = 0; i < SymbolsTotal(true); i++){
      Print(SymbolName(i, true));
      if(StringSubstr(SymbolName(i, true), 0, 6) == symbol){
         isCheck = true;
      }
   }
   
   if(isCheck == false){
      Alert("気配値表示に" + symbol + "を追加して下さい");
   }
}
実行すると通貨ペア一覧が出力されます。 NZDCHFが一覧に存在するかをチェックしてみました。 この通貨は表示していないのでアラートが表示されます。

まとめ

簡単なスクリプトのご紹介でした。 MT4を軽くするために気配値表示から不要な通貨ペアを削除している場合は多いと思いますので、開発者の方は知っていて損は無いかと思います。 ComboBox.mqhのCComboBolxクラスと組み合わせて応用すると、利用者の通貨ペアに合わせたコンボボックスが作れたりもします。
GogoJungle Corporation
Registration Number for Financial Instruments Business: No. 1960 - Kanto Finance Bureau (Gold Trading)
A member of General Incorporated Association and Japan Investment Advisers Association
GogoJungle Corporation
Registration Number for Financial Instruments Business:
No. 1960 - Kanto Finance Bureau (Gold Trading)
A member of General Incorporated Association
Japan Investment Advisers Association
Financial Services AgencyJapan Investment Advisers AssociationFinancial Instruments Mediation Assistance CenterSecurities and Exchange Surveillance Commission

Copyright © 2025 GogoJungle Inc. All Rights Reserved.