MQL5

Pips vs points: conversión según los digits

En un broker de 5 digits, 1 pip = 10 points; en 3 digits (JPY), 1 pip = 10 points también, pero en 2/4 digits 1 pip = 1 point. Esta función hace que los inputs «en pips» sean portables en todas partes.

Requisitos

MetaTrader 5, MQL5

MQL5
double PipSize(string symbol)
{
   int    digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
   double point  = SymbolInfoDouble(symbol, SYMBOL_POINT);

   // 5 digits (EURUSD 1.08543) et 3 digits (USDJPY 154.123) :
   // le pip est la 4e / 2e décimale, soit 10 points
   if(digits == 5 || digits == 3)
      return point * 10.0;
   return point; // 4 ou 2 digits : pip = point
}

double PipsToPrice(string symbol, double pips)  { return pips * PipSize(symbol); }
double PriceToPips(string symbol, double price) { return price / PipSize(symbol); }

// input "SL = 30 pips" -> distance prix correcte chez tout broker
double slDistance = PipsToPrice(_Symbol, 30.0);

Resultado

2026.06.10 09:00:00.115  PipTool (EURUSD,M15)  EURUSD 5 digits : point=0.00001 -> pip=0.00010
2026.06.10 09:00:00.116  PipTool (EURUSD,M15)  SL 30 pips = 0.00300 (300 points)
2026.06.10 09:00:00.205  PipTool (USDJPY,M15)  USDJPY 3 digits : point=0.001 -> pip=0.010
2026.06.10 09:00:00.206  PipTool (USDJPY,M15)  SL 30 pips = 0.300 — même input, distance correcte partout
2026.06.10 09:00:00.207  PipTool (EURUSD,M15)  Sans PipSize, un SL "30 pips" devenait 3 pips sur 5 digits
PipsPointsDigitsPiège

Snippets relacionados

Volver al Data Lab