When you start learning about Forex Trading one of the first concepts you will see is the concept of PIP. In this article we are going to see what is a PIP and what is a PIPETTE in Forex Trading. We will also see when to use these terms and how to caluclate the PIP Value. Last but not least we will see in some useful MQL4 function related to PIPS.

### What is a PIP, and a PIPETTE, in Forex Trading

By definition the **PIP** is the **Price Interest Point**. **A PIP is the unit of measure for the change of value in the exchange rate of two currencies**. For currency pairs with 4 decimals 1 pip = 0.0001 while for YEN based pair it is 1 pip = 0.01. Complex? A couple of examples will make it clear.

Assume that the EURUSD is exchanged at 1.0799 meaning that with 1 EUR you buy 1.0799 USD, if the rate changes to 1.0795 it means that there is a difference of 1.0799-1.0795=0.0004 that is 4 pips. If the USDJPY is quoted 107.38, meaning that with 1 USD you can buy 107.38 Yen, and then it changes to 107.40, this results in a price change of 107.40-107.38=0.02 which is 2 pips.

Due to the evolution of technology, increased popularity of online trading platforms and higher volume of trades, Brokers have started to present the exchange rates with 5 decimals for normal pair and 3 decimals for JPY pairs. This has resulted in the introduction of a new term: PIPETTE. **A Pipette is a 1/10 of a PIP** and usually the last decimal (the 5th for normal pairs and 3rd for JPY pairs) in the exchange rate. 10 Pipettes=1Pip.

### When to use the terms PIP and PIPETTE

PIP is still the most used in the daily Forex Trading jargon. Usually PIP and PIPETTE are used to:

- Express the spread, example,
*“the spread is 3 pips”*, meaning the difference between the ask and the bid price is 3 pips - Express a price change,
*“the price has dropped of 120 pips”* - Express a gain or profit,
*“I made 40 pips with that trade”* - Express a loss,
*“I lost 50 pips”* - Express the distance between open price and take profit or stop loss price,
*“Stop loss 30 pips and take profit 60 pips”*, meaning the stop loss price will be 30 pips from the open price and the take profit 60 pips away

### How to Calculate the PIP value

Calculate the PIP value is a necessary step to understand the profit/loss of a trade and to implement strategies of risk management.

The PIP value is always calculated for a size or volume, usually a standard lot (100.000 units), a mini lot (10.000 units) or micro lot (1.000 units). The first step to calculate the pip value is to multiply the volume for 0.0001 (0.01 in case of JPY pairs), this will give you the value in the QUOTE currency. Example, in a trade of 20.000 EURUSD I multiply 20.000×0.0001=2 which is the PIP Value in USD, in other words, 1 pip of change in the exchange rate is a profit/loss of 2 USD. In case of 30.000 of USDJPY the PIP value would be 30.000*0.01=300 JPY. Having the pip value in the quote currency is not always useful, usually you want to have the value expressed in your base currency of the account . Once you have the PIP value in a currency you just need to convert in your currency, so in the second example the 300 JPY of PIP value can be converted in USD knowing the USDJPY exchange rate (assume USDJPY 107.40), in fact 300 JPY / 107.40 USDJPY = 2.79 USD per pip.

You can see the pip value in use in the article about the position size.

You can also download a simple script to quickly see the Default lot size and PIP value for the selected Pair

[wpdm_package id=’832′]

### MQL4 and PIP Value, MODE_TICKVALUE – MODE_TICKSIZE – MODE_TICKVALUE

If you are learning about MQL4 and trading automation with MetaTrader 4 you will be happy to know that MQL4 has some native functions to retrieve the PIP Value and the default lot size.

We already introduced the concept of TICK in this article. Basically the tick is the smallest change that can have a price. MQL4 includes the following information natively:

- MarketInfo(Symbol(), MODE_LOTSIZE) gives you the default lot size, so you know what is the tick value referred to
- MarketInfo(Symbol(), MODE_TICKVALUE) is the tick value for the selected currency (Symbol()) in the account currency
- MarketInfo(Symbol(), MODE_TICKSIZE) is the size of the tick, in all modern brokers it is a pipette

So if we run the following code we will get all the information we need. Pay attention as it shows the TICK value and this is not necessarily equal to the PIP value. If the Tick size is a PIPETTE then the Tick Value will be the value of a pipette.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- //We get all the values and perform some conversion to string to make it readable string TickValue=DoubleToStr(MarketInfo(Symbol(),MODE_TICKVALUE),4); string TickSize=DoubleToStr(MarketInfo(Symbol(),MODE_TICKSIZE),5); string LotSize=MarketInfo(Symbol(),MODE_LOTSIZE); //We print the values Print("The Tick value for the currency ",Symbol()," is ",TickValue, " for a default lot of ",LotSize, " units and the tick size is ",TickSize); } //+------------------------------------------------------------------+ |

### Conclusion

Understanding the concepts of PIP and PIPETTE is required if you want to trade Forex. You will need to understand the meaning, the common jargon and the importance of PIP value.

If anything is not clear or need any help please feel free to comment or contact us.

Please leave a comment if you have any feedback or doubt and remember to like us on Social Media!

I would really appreciate also suggestions for improvements and reports of any bug found. Thank you!

HEH u rock Man..this article helped me a lot as i m a newbee on forex..would like to kw wht exacly is 4 & 5 here which u hwe specified..

string TickValue=DoubleToStr(MarketInfo(Symbol(),MODE_TICKVALUE),4);

string TickSize=DoubleToStr(MarketInfo(Symbol(),MODE_TICKSIZE),5);

& if i dont specify 4 & 5 wht happens??

Thank you for your comment tasaoirse!

DouebleToStr basically converts a variable of double type to string, 4 and 5 are the number of digits to keep after the decimal point, to give you an example

void OnStart(){

Print(DoubleToStr(12.123654789,4)); //returns 12.1237 (because it rounds it)

Print(DoubleToStr(12.123654789,5)); //returns 12.12365

Print(DoubleToStr(12.123654789)); //returns 12.12365479 (the default parameter if not specified is 8)

}

Does that make sense?