【MT4】MQLで価格差をPipsに変換する方法

通貨やブローカーによって小数点以下の桁数が違うので、
単純に引き算するだけだとPipsにならず処理できないですよね。

そこで、今回は小数点以下の桁数を考慮して
価格差をPipsに変換する方法をご紹介いたします。

まずは価格差を取得しよう

まず二つの通貨の価格差を計算します。

価格差なので引き算で求める事が出来ます。
しかし、二つの価格のうちどちらが大きいかを考えないといけないですよね

ただいちいち「どっちが大きいか」って処理をするのは面倒です

そこで、便利なのが絶対値
中学校くらいで習いましたかね?

MQLではMathAbsという関数で取得する事が出来ます。

MathAbs(価格Aー価格B)

これで、どっちが大きいかを考える必要はなくなります。

小数点以下の桁数を判断する方法

MQLには、表示しているチャートの通貨ペアの価格の精度を取得する関数が用意されています。

それが「Digits()」

この値を使ってPipsに変換していきます。

  ret = MathAbs(d1 - d2);
  if(Digits==2 || Digits==3){
     ret *= 100;
  }else if(Digits==4 || Digits==5){
     ret *= 10000;
  }

小数点以下の桁数が2桁、3桁の時は、価格差を100倍
小数点以下の桁数が4桁、5桁の時は、価格差を10000倍

こうする事でPipsに変換する事が出来ます。

よく使うと思いますので、関数にして用意しておくと良いですね!!

//二つの価格差Pips
double getPips(double d1,double d2){
  double ret = 0.0;
  ret = MathAbs(d1 - d2);
  if(Digits==2 || Digits==3){
     ret *= 100;
  }else if(Digits==4 || Digits==5){
     ret *= 10000;
  }
  return(ret);
}

getPips(Open[1],Close[1])

こんな感じで、pipsを取得数事が出来ますよ。

まとめ

今日は二つの価格差をPipsに変換する方法を書きました。

MQLにあるDigits()という小数点以下の桁数の情報を使って計算する事が出来ます。

また絶対値を使う事でコードを短くする事が出来ますね!


この記事が気に入ったらサポートをしてみませんか?