- How to calculate in $ the 1 PIP / 1 POINT value of EURUSD in Meta Trader 4 ?
- Calculate the profit in MT4
- MQL4: MarketInfo returns Zero for EURUSD!
- In code:
Risk depends on your initial stop loss, lot size, and the value of the pair.
- 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
and verify that MODE_TICKVALUE is returning a value in your deposit
currency, as promised by the documentation, or whether it is returning a value
in the instrument's base currency.
MODE_TICKVALUE is not reliable on non-fx instruments with many brokers. - You must normalize lots properly and check against min and max.
- You must also check FreeMargin to avoid stop out
- Use a GUI EA like mine (for MT4): Indicators: 'Money Manager Graphic Tool' indicator by 'takycard' Forum - Page 6
This link is broken. You could change it into this link: https://www.mql5.com/en/forum/227407 or into another valid link.
Thanks for your replies. However when I use your formula I still not get the right value. Below is my code:
double point=MarketInfo("EURJPY",MODE_POINT); double ticksize=MarketInfo("EURJPY", MODE_TICKSIZE); double tickvalue=MarketInfo("EURJPY", MODE_TICKVALUE); double value200tickUSD=200*point*(tickvalue/ticksize); Print("Value in deposit currency for 200 points (0.200JPY=?): ",DoubleToString(value200tickUSD,2));
I am using a 5 digit account with an account currency is USD and this code return the value 186.95
however 0.200 JPY=0.0018695 USD
So what is missing ?
I have $187.04 USD per lot
ok it makes more sense now.
Regards,
Dorian
double point=MarketInfo("EURJPY",MODE_POINT); double ticksize=MarketInfo("EURJPY", MODE_TICKSIZE); double tickvalue=MarketInfo("EURJPY", MODE_TICKVALUE); double value200tickUSD=200*point*(tickvalue/ticksize); Print("Value in deposit currency for 200 points (0.200JPY=?): ",DoubleToString(value200tickUSD,2));
I have $187.04 USD per lot
Is this code still good if my account is in AUD?
double point=MarketInfo("EURJPY",MODE_POINT); double ticksize=MarketInfo("EURJPY", MODE_TICKSIZE); double tickvalue=MarketInfo("EURJPY", MODE_TICKVALUE); double value200tickUSD=200*point*(tickvalue/ticksize); Print("Value in deposit currency for 200 points (0.200JPY=?): ",DoubleToString(value200tickUSD,2));
Presumably, although I obviously can't test it from within the U.S. I am using that code, however.
Note that the called symbol in the posted snippet is EURJPY and the account currency is USD (per the USD-named variable). I see no reason that changing USD to AUD would blow up the code.
Thread is circa 2018, by the way.- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use