Pips vs points : conversion selon les digits
Sur un broker 5 digits, 1 pip = 10 points ; sur 3 digits (JPY), 1 pip = 10 points aussi, mais sur 2/4 digits 1 pip = 1 point. Cette fonction rend les inputs « en pips » portables partout.
Cas d'usage
Le piège n°1 des EAs portés d'un broker à l'autre : un SL de 30 « pips » devenu 3 pips.
Prérequis
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);Résultat
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