Pips vs Points in MetaTrader

To add comments, please log in or register
McHenry29
16
McHenry29  

Hi Guys! Name is Michael.
I am from Namibia, somewhere in Africa but im currently in Brazil.

In Metatrader 5 the thing that confuses me is about the Points and Pips. I understand that:
10 points = 1 Pip
100 Points = 10 Pips and so on, but once the trade moves it multiplies the money with Points and not Pips so I ended with this at my take profit level.

GBPAUD
Spread: 6 Pips
Profit: 385.85 USD
Points: 5015
My leverage is 1:50
I am trading 0.10 lots
Can you guys please help me with the maths? 


Sergey Golubev
Moderator
106109
Sergey Golubev  

It depends on digits.
For example:

  • two 4-digit point = two pips;
  • twenty 5-digit point = two pips.

Example:

  • if your broker is having 5 digit price (1.23450 for example), so
    1.23450 - 1.23400 = 50 pints = 5 pips.
  • If your broker is having 4 digit price on the charts so
    1.2345 - 1.2340 = 5 pints = 5 pips.

----------------

Most of the brokers are having price in 5 digit price but you can check it by openning any chart to see how many digits after dot for example. 

Carl Schreiber
Moderator
7072
Carl Schreiber  

Point is in most cases the smallest possible price change of a symbol. It is set by the provider.

Previously this had been the Pip - but it was too big for the banks to play their arbitrage-game, so the Point was born.

But as Point and digit can be set by the providers it differs from one to the other even for the same symbols!!

The Pip now a days is something theoretical as there is no 'rule' about it and so I defined for me the Pip to be the price movement that comes closest to 10,- USD (or EUR) and I use this calculation for that:

bool Pip10(string sym,int &dig,double &pip, double refValue=10.0) {
   
   int      digis = (int)MarketInfo(sym,MODE_DIGITS),
            xp    = digis+1, XP = 0;
   double   tV    = MarketInfo(sym,MODE_TICKVALUE),///
            tS    = MarketInfo(sym,MODE_TICKSIZE),
            mL    = MarketInfo(sym,MODE_MINLOT),
            pt    = MarketInfo(sym,MODE_POINT),
            lV    = ( tS*tV == 0.0 ) ? 0.0 : tV/tS, // LotValue
            //pV    = mL*lV,
            //TV    = mL*tV, // tgt*MinLot*lV => n* MinLot * tV
            M,P1,P2, D1,D2,
            minD = 9999999999999.9,  minD2 = 9999999999999.9;
            
   if ( lV < 0.00000000000001 ) { Comment(sym," is NOT aivailable (yet?)"); pip=0.0; dig=-99; return(false); } // No connection yet
   //Print("ini Pip10(",sym,"..,ref:",DoubleToStr(refValue,2),")  Digits: ",digis," TickVal: ",DoubleToStr(tiV,2));
   while(xp>-9) {

      M  = pow(10,xp);
      P2 = M*lV*2.0;
      P1 = M*lV;
      D1 = fabs(P1-refValue);
      D2 = fabs(P2-refValue);
      
      if ( D2 > minD2 && minD > minD2 ) {
         dig = -XP;
         pip = pow(10,-dig)*2.0;
         if ( pip < tS) { Alert(sym,": PIP(",DoubleToString(pip,digis),") is SMALLER than Ticksize(",DoubleToString(tS,digis),") "); pip=0.0; dig=-99; return(false); }
         return(true);
      }

      if ( D1 > minD && minD2 > minD ) {
         dig = -XP;
         pip = pow(10,-dig);
         if ( pip < tS) { Alert(sym,": PIP(",DoubleToString(pip,digis),") is SMALLER than Ticksize(",DoubleToString(tS,digis),") "); pip=0.0; dig=-99; return(false); }
         return(true);
      }
      minD2 = D2;
      minD  = D1;
      XP = xp;
      xp--;

   }
   pip=0.0; dig=-99;
   Comment(sym," is NOT available (yet?)");
   return(false); // not set :()
}

The problem for this approach is that you need the Tickvalue and e.g. after a (re-) start the Tickvalue has arrived (still loading prices,...) while the Metatrader already has started to calculate!

whroeder1
17943
whroeder1  
McHenry29:In Metatrader 5 the thing that confuses me is about the Points and Pips. I understand that:

10 points = 1 Pip
100 Points = 10 Pips and so on, but once the trade moves it multiplies the money with Points and not Pips so I ended with this at my take profit level.

GBPAUD
Spread: 6 Pips
Profit: 385.85 USD
Points: 5015
My leverage is 1:50
I am trading 0.10 lots
Can you guys please help me with the maths? 

  1. 10 points = 1 pip only on 5 digit brokers.
    There is Tick, PIP, and Point. They are all different in general. A tick is the smallest change of price. A Point is the least significant digit quoted. In currencies a pip is defined as 0.0001 (or for JPY 0.01)

    On a 4 digit broker a point (0.0001) = pip (0.0001). [JPY 0.01 == 0.01] On a 5 digit broker a point (0.00001) = 1/10 pip (0.00010/10). Just because you quote an extra digit doesn't change the value of a pip. (0.0001 == 0.00010) EA's must adjust pips to points (for mq4.) In currencies a tick is a point. Price can change by least significant digit (1.23456 -> 1.23457)

    In metals a Tick is still the smallest change but is larger than a point. If price can change from 123.25 to 123.50, you have a TickSize of 0.25 and a point of 0.01. Pip has no meaning.

    This is why you don't use TickValue by itself. Only as a ratio with TickSize. See DeltaValuePerLot()

  2. Leverage is irrelevant.
    • You place the stop where it needs to be - where the reason for the trade is no longer valid. E.g. trading a support bounce the stop goes below the support.
    • Account Balance * percent/100 = RISK = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot + CommissionPerLot) (Note OOP-OSL includes the SPREAD, and DeltaPerLot is usually around $10/pip but it takes account of the exchange rates of the pair vs. your account currency.)
    • Do NOT use TickValue by itself - DeltaPerLot
    • You must normalize lots properly and check against min and max.
    • You must also check FreeMargin to avoid stop out

  3. Help you with what? You haven't asked a question.
To add comments, please log in or register