Point と Digits とは(Pips とは違う?)
ポイントサイズ (Point) は具体的には 0.001 や 0.0001 などの数値であり、ブローカーが各通貨ごとに提示 (quote) する価格表示の最小単位を示しています。 ポイントの単位は決済通貨です。 下記はあるブローカーを使用した場合の、MetaTrader の取引パネルの表示例(ドル円とユーロドル)です。
USDJPY は 0.001(円)の単位まで表示されているので、1 point = 0.001 です。 EURUSD は 0.00001(ドル)の単位まで表示されているので、1 point = 0.00001 です。 同様の概念として 桁数 (Digits) がありますが、これは小数点以下何桁まで提示するかであり、本質的には Point と同じ情報を示しています。 これらの値は、通貨ごとに異なるだけでなく、ブローカーによって異なること に注意してください。 提示パターンは大きく下記の 2 通りに分かれるようです。
- 3/5 digit broker … USDJPY が
x.xxX
、EURUSD がx.xxxxX
と提示される。 - 4/6 digit broker … USDJPY が
x.xxxX
、EURUSD がx.xxxxxX
と提示される。
OrderSend 関数や CTrade クラスで注文を出す 場合、最大許容スリッページ (Deviation) などをポイント数で指定する必要があります。 例えば、USDJPY のポイントサイズが 0.001 のときに、最大許容スリッページを 0.005 円 (0.5 pips) にしたければ、5 ポイントと指定する必要があります。
ちなみに、FX の世界では Pips (percentage in point) という単位もよく使われており、取引の成績を表現するときに利用されています(例:「ドル円で 10 ピップとった!」)。 ある通貨の 1 pip がいくらかは世界共通で決められていて、USDJPY の 1 pip = 0.01 円(1 銭)、EURUSD の 1 pip は 0.0001 ドルです。 上の取引パネルの図で、大きく表示されている数値が Pips を表しています。 つまり、このブローカーの場合、1 pip = 10 points です。
カレントチャートの通貨のポイントサイズを取得する (Point, Digits)
カレントチャートで表示している通貨のポイントサイズを調べるには、Point 関数、桁数を調べるには Digits 関数 を使用します。
指定した通貨のポイントサイズを取得する (CSymbolInfo クラス、SymbolInfoXXX 関数)
CSymbolInfo クラスを使う方法
取引クラス のひとつである CSymbolInfo クラス を使用すると、指定したシンボル(通貨)の情報を取得することができます。 例えば、通貨ペア “USDJPY” のポイントサイズや桁数を知らべるには次のようにします。
SymbolInfoXXX 関数をつかう方法
シンボル情報は、SymbolInfoDouble 関数 や SymbolInfoInteger 関数 で取得することもできます。
こちらは、毎回対象のシンボル名を指定する必要があります。
1 つのシンボルからいろいろな情報を取得したい場合は、CSymbolInfo
クラスを使った方がコードがすっきりします。
SymbolInfoDouble(Symbol(), SYMBOL_POINT)
とした場合は、Point()
と同じ意味になります。
不正なシンボル名などを指定して情報が取れない場合は、SymbolInfoInteger
が 0 を返すことを利用してある程度のエラー処理を行えますが、ちゃんとエラー処理を行いたい場合は、3 つの引数を取るバージョンの SymbolInfoDouble/Integer
関数を使用します。
MarketInfo 関数をつかう方法(MT4 のみ)
MQL4 では次のように MarketInfo
関数を使っても同様にポイントサイズを取得することができますが、MQL4/5 共通で SymbolInfoDouble
関数が使えるので、そちらを使っておけばよいでしょう。
関連記事
- MetaTrader/MQL: CTrade クラスで注文を出す (MT5)
- MetaTrader/MQL: OrderSend の引数を理解する - MqlTradeRequest/MqlTradeResult 構造体 (MT5)
- MQL で Hello World
- MetaTrader/MQL: MQL4 と MQL5 のどちらでコンパイルされているか調べる
- MetaTrader/MQL: チャートのサイズ(幅・高さ)を取得する (ChartGetInteger)
- MetaTrader/MQL: インジケーターの実装例 - アカウント(口座)情報を表示する
- MetaTrader/MQL: チャートのタイムフレーム(H1 や M15)を取得する (Period, PeriodSeconds)