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

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



