[MQL]価格をpipsに換算するコード(逆もあり)

インジケーターやEAの作成では価格とpipsの換算を頻繁に行うので、関数化しておくと再利用できて便利です。

この記事では、MQLで価格をpipsに(または逆にpipsを価格に)換算する関数のコードを記載します。

コピペでそのまま使えます。

価格をpipsに換算

価格をpipsに換算する関数は下記のコードで書けます。引数priceに換算したい価格幅を入れるとpipsに換算して値を返します(価格幅ではなく価格そのものを入れても機能します)…

//+------------------------------------------------------------------+
//| 価格をpipsに換算する関数
//+------------------------------------------------------------------+
double PriceToPips(double price)
{
   double pips = 0;

   // 現在の通貨ペアの小数点以下の桁数を取得
   int digits = (int)MarketInfo(Symbol(), MODE_DIGITS);

   // 3桁・5桁のFXブローカーの場合
   if(digits == 3 || digits == 5){
     pips = price * MathPow(10, digits) / 10;
   }
   // 2桁・4桁のFXブローカーの場合
   if(digits == 2 || digits == 4){
     pips = price * MathPow(10, digits);
   }
   // 少数点以下を1桁に丸める(目的によって桁数は変更する)
   pips = NormalizeDouble(pips, 1);

   return(pips);
}

簡単にこの関数のポイントを説明します。

price * MathPow(10, digits)は、priceをpointに換算する処理です。

通貨の少数点以下桁数に、3桁(円ペア通貨)・5桁(ドルペア通貨)を採用しているブローカーの場合はピップス=ポイント÷10でpips値を計算します。

通貨の少数点以下桁数に、2桁(円ペア通貨)・5桁(ドルペア通貨)を採用しているブローカーはピップス=ポイントでpips値を計算します。

また、何桁で丸めるかは最後にNormalizeDouble()で調整します。上記のコードでは少数点以下1桁で丸めています。

pipsを価格に換算

pipsを価格に換算する関数は下記のコードで書けます。引数pipsに換算したいpips値を入れると価格に換算して値を返します。

//+------------------------------------------------------------------+
//| pipsを価格に換算する関数
//+------------------------------------------------------------------+
double PipsToPrice(double pips)
{
   double price = 0;

   // 現在の通貨ペアの小数点以下の桁数を取得
   int digits = (int)MarketInfo(Symbol(), MODE_DIGITS);

   // 3桁・5桁のFXブローカー
   if(digits == 3 || digits == 5){
     price = pips / MathPow(10, digits) * 10;
   }
   // 2桁・4桁のFXブローカー
   if(digits == 2 || digits == 4){
     price = pips / MathPow(10, digits);
   }
   // 価格を有効桁数で丸める
   price = NormalizeDouble(price, digits);
   return(price);
}

簡単にこの関数のポイントを説明します。

pips / MathPow(10, digits)は、pipsをpointに換算する処理です。

通貨の少数点以下桁数に、3桁(円ペア通貨)・5桁(ドルペア通貨)を採用しているブローカーの場合は、価格=ポイント×10で価格を計算します。

通貨の少数点以下桁数に、2桁(円ペア通貨)・5桁(ドルペア通貨)を採用しているブローカーは、価格=ポイントで価格を計算します。

また、何桁で丸めるかは最後にNormalizeDouble()で調整します。上記のコードではその通貨ペアの有効桁数でで丸めています。

まとめ

価格とpipsを換算する関数の書き方でした。

よく行う処理なので関数にしておくと何かと便利です。

コメント

この記事へのコメント(0 件)