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
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
=============================================================
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);
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
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