پیپ در برابر پوینت: تبدیل بر اساس digits
روی بروکر 5 رقمی، 1 پیپ = 10 پوینت؛ روی 3 رقمی (JPY) هم 1 پیپ = 10 پوینت، اما روی 2/4 رقمی 1 پیپ = 1 پوینت. این تابع ورودیهای «پیپی» رو همهجا قابلحمل میکنه.
کاربرد
تلهی شماره 1 موقع انتقال EA از یک بروکر به بروکر دیگه: یک SL سی «پیپی» که شده 3 پیپ.
پیشنیازها
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);نتیجه
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