MQL5

پیپ در برابر پوینت: تبدیل بر اساس 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

اسنیپت‌های مرتبط

بازگشت به آزمایشگاه داده