Newbie question about "pip"

 

Hi all,

I learned that "pip" refers to the last decimal place in the quote.

For example, EUR/USD current bid at 1.1486. When this figure rises to 1.1490 we say it rises by 4 pips.

I also learned that in order to set the stop loss 50 pips down from the entry price (say Ask), I would use the Ask-50*Point to calculate the stop loss.

However, I recognize that different dealers have different quotes in terms of number of decimal places in the quotes. Example: FXDD have 4 places for EURUSD (e.g 1.1486/1.1488, so the spread is 0.0002), whereas IBFX or others have 5 decimal places (e.g 1.14852/1.14875, so the spread is 0.00025).

Now, is the spread by FXDD 2 pips? Is the spread by IBFX 2.5 pips (?) or 25 pips? Both kind of dealers use MetaTrader & MQL4 as their platforms, what happends if I use the same formula Ask - 50*Point to calculate stop loss in both platforms?

I am very thankful to your invaluable guidance,

Cheers

 

Conventionally 1 pip = .0001 price change (except for XXX/JPY pairs, where one pip is .01 price change).

This is what everyone will call a "pip". Now there may be "sub-pips" which you have noticed.


See MarketInfo() and Point in documenatation...


---

Here is a MarketInfo report on EURUSD from a Dealer that uses 5 decimals (sub-pip pricing) on EURUSD

Report for EURUSD
1.48106     Low day price. 
1.48176     High day price.
2008.02.25 06:58:06     The last incoming tick time (last known server time).
1.48154     Last incoming bid price. For the current symbol, it is stored in the predefined variable Bid
1.48181     Last incoming ask price. For the current symbol, it is stored in the predefined variable Ask
0.00001     Point size in the quote currency. For the current symbol, it is stored in the predefined variable Point
5     Count of digits after decimal point in the symbol prices. For the current symbol, it is stored in the predefined variable Digits
27     Spread value in points.
100     Stop level in points.
100000     Lot size in the base currency.
1     Tick value in the deposit currency.
0.00001     Tick size in points.
-3.69     Swap of the long position.
1.28     Swap of the short position.
0     Market starting date (usually used for futures).
0     Market expiration date (usually used for futures).
1     Trade is allowed for the symbol.
0.01     Minimum permitted amount of a lot.
0.01     Step for changing lots.
1000     Maximum permitted amount of a lot.
3     Swap calculation method. 0 - in points; 1 - in the symbol base currency; 2 - by interest; 3 - in the margin currency.
0     Profit calculation mode. 0 - Forex; 1 - CFD; 2 - Futures.
0     Margin calculation mode. 0 - Forex; 1 - CFD; 2 - Futures; 3 - CFD for indices.
0     Initial margin requirements for 1 lot.
0     Margin to maintain open positions calculated for 1 lot.
0     Hedged margin calculated for 1 lot.
1000     Free margin required to open 1 lot for buying.
0     Order freeze level in points. If the execution price lies within the range defined by the freeze level, the order cannot be modified, cancelled or closed.

"Now, is the spread by FXDD 2 pips? Is the spread by IBFX 2.5 pips (?) or 25 pips? "

It would appear that the calculations for the Dealer in the example above would be "25 pips"... 25*Point

"what happends if I use the same formula Ask - 50*Point to calculate stop loss in both platforms?"

That could result in a boo-boo. Adjust your calculations accordingly...
MarketInfo(Symbol(), MODE_POINT) gives the detail

 
phy wrote >>

Conventionally 1 pip = .0001 price change (except for XXX/JPY pairs, where one pip is .01 price change).

This is what everyone will call a "pip". Now there may be "sub-pips" which you have noticed.


See MarketInfo() and Point in documenatation...


---

Here is a MarketInfo report on EURUSD from a Dealer that uses 5 decimals (sub-pip pricing) on EURUSD


"Now, is the spread by FXDD 2 pips? Is the spread by IBFX 2.5 pips (?) or 25 pips? "

It would appear that the calculations for the Dealer in the example above would be "25 pips"... 25*Point

"what happends if I use the same formula Ask - 50*Point to calculate stop loss in both platforms?"

That could result in a boo-boo. Adjust your calculations accordingly...
MarketInfo(Symbol(), MODE_POINT) gives the detail

It seems that the confusion comes from the notion that 1 pip = last digit. While this was true in

the days when there when brokers did not offer fractional pips, it is not true any more when

there are fractional pips. This leads me to my question:

The "Digits" and "Point" functions of MT4 would offer a convenient way to make pip related

calculations if they would be consistent across different brokers. But the problem is that

they return different values depending on whether the broker offers fractional pips.

I was trying to find the correct definitions for "pip" and "point" on the internet and found

conflicting answers. While many web sites say that a pip is the 4th (or 2nd for JPY) decimal

digit, others say that pip and point are the same thing, and if I put that together with how MT4

reports what a point is (where it may be the 4th or the 5th digit), this story becomes a mess.

Does anyone know whether MT4 has a reliable way (function) to get the correct value of pip

(regardless of whether the broker offers fractional pips or not) without having to do special

coding using IF statements around digits=5 or digits=4, etc...?

Thanks,

Arpad

=============================================================

 
amuranyi:

It seems that the confusion comes from the notion that 1 pip = last digit. While this was true in

the days when there when brokers did not offer fractional pips, it is not true any more when

there are fractional pips. This leads me to my question:

The "Digits" and "Point" functions of MT4 would offer a convenient way to make pip related

calculations if they would be consistent across different brokers. But the problem is that

they return different values depending on whether the broker offers fractional pips.

I was trying to find the correct definitions for "pip" and "point" on the internet and found

conflicting answers. While many web sites say that a pip is the 4th (or 2nd for JPY) decimal

digit, others say that pip and point are the same thing, and if I put that together with how MT4

reports what a point is (where it may be the 4th or the 5th digit), this story becomes a mess.

Does anyone know whether MT4 has a reliable way (function) to get the correct value of pip

(regardless of whether the broker offers fractional pips or not) without having to do special

coding using IF statements around digits=5 or digits=4, etc...?

Thanks,

Arpad

=============================================================

The confusion is thinking that a pip is the same as a Point.

20*Point is wrong on a 5 digit broker. You meant 20 pips == 20*0.0001 but get 20*0.00001 == 0.00020 (2 pips)

On a 4 digit broker, Point is equal to a currenty pip.

On a 5 digit broker, Point is 1/10 of a currency pip. You either need to multiply all your constants or change the code:


double pips2dbl = Point, pips2points=1;

if (Digits == 3 || Digits == 5) {pips2dbl *= 10.0; pips2points*=10;}


if ((OrdersTotal() >= 1) && (Ask <= (ibid-(20*pips2dbl)))) {


Ask, 3, is the same problem. You need 3*pips2dbl

OrderClose(ticket, OrderLots(), Ask, 3*pips2points, Red);

Reason: