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