MT4で通貨ペアを確実に扱う

MT4で他通貨ペア(EAが挿入されたチャートの通貨ペアとは別の通貨ペア)を扱うのはちょっと手間が必要です。その手間を解消するためのモジュールを作成したのでご紹介します。

概要

 MT4は提供する会社によって通貨ペア名が異なることがあります。例えばドル円の場合、ほとんどのブローカーでは「USDJPY」ですが、一部のブローカーでは「USDJPYpro」や「USDJPYm」が使われていたりします。そのため次のような処理は、「USDJPYpro」の口座では正しく機能しません。

iClose("USDJPY", 0, 1);

 上記のコードはドル円の終値を取得する処理ですが、通貨ペア名を「USDJPY」と決め打ちにしてしまっているため、「USDJPYpro」や「USDJPYm」の口座では正しく終値が取得できないのです。この問題への対策として、予め通貨ペア名の後ろに付く文字(proやmの部分)を調べておき、指定する通貨ペア名を調整することで対応することができますが、この方法にも問題はありました。それはMT4の気配値表示にユーザーが通貨ペアをセットしていなかった場合、正しく値が取得できない可能性があったのです。
 そこでSymbolSearchモジュールでは、ブローカーごとの通貨ペア名の違いを吸収する処理を実装しつつ、気配値表示に通貨ペアが存在しない場合には気配値表示に追加する処理も加えました。これによって他通貨ペアの情報も確実に取得するのを目指したのが、このモジュールの特徴です。

準備

GithubからSymbolSearch.mqhをダウンロードして下さい。

MT4のデータフォルダを開き、MQL4/Include/mql4_modules/SymbolSearch/SymbolSearch.mqhとして保存します。

mql4のコード内でSymbolSearch.mqhをincludeしたら準備完了です。

#include <mql4_modules/SymbolSearch/SymbolSearch.mqh>

使い方

 使い方は簡単です。他通貨ペア名を指定する部分では、代わりにgetSymbolInMarketメソッドを実行してください。getSymbolInMarketは引数で指定された文字列を含む通貨ペア名を返します。もし指定した通貨ペアが気配値表示に存在せず、ブローカーが提供している通貨ペアの一覧には存在している場合は、気配値表示に追加してから通貨ペア名を返します。

iClose(SymbolSearch::getSymbolInMarket("USDJPY"), 0, 1);

上記のコードは、ブローカーごとに適切なドル円の名称を返します。USDJPYproの口座であればUSDJPYproが、USDJPYmの口座であればUSDJPYmが戻り値となります。

引数には文字列を2つ指定することができます。その場合は両方の文字列を含む通貨ペア名を返します。

iClose(SymbolSearch::getSymbolInMarket("JPY", "EUR"), 0, 1);

上記のコードの場合、ユーロ円の通貨ペア名(例えばEURJPY)が戻り値となります。ただしもし仮にJPYEURという通貨ペアを提供しているブローカーがあれば、戻り値はJPYEURとなる点に注意してください(そんなMT4ブローカーがあるのかは知りませんが...)。本来EURJPYとJPYEURでは処理を変えるべきですので、引数を2つ指定する方法を使う場合は注意してください。

arrow_upward