Yes, the account leverage may be set to 1:500 in both cases, but what I believe you might not be aware of is that each symbol, especially indices, commodities, and similar instruments, can have its own specific leverage, independent of the account’s main setting.
This often explains large differences in profit and loss when testing across brokers, even if everything else appears to be the same.
Thanks.
Can we get information about this from the chart?
With function like SymbolInfoInteger() or SymbolInfoDouble() or another function? Or we just can figure out this differents after make tests?
- www.mql5.com
Yes, the account leverage may be set to 1:500 in both cases, but what I believe you might not be aware of is that each symbol, especially indices, commodities, and similar instruments, can have its own specific leverage, independent of the account’s main setting.
This often explains large differences in profit and loss when testing across brokers, even if everything else appears to be the same.
Since when the leverage affects the tick value and profit/loss and not just the required margin?! 🤔
The problem is in tick value. RoboForex is wrong. Tick value (that is expressed for 1 lot operation) is 1.00, not 0.1.
Since when the leverage affects the tick value and profit/loss and not just the required margin?! 🤔
The problem is in tick value. RoboForex is wrong. Tick value (that is expressed for 1 lot operation) is 1.00, not 0.1.
Of course, leverage affects margin requirements, not tick value or PnL directly, you are absolutely right on that point.
What I wanted to point out to Piotr is that we often assume that everything is the same between brokers just because the price and account leverage match, but we don't always pay attention to the specific leverage per symbol, which is where the structural differences can start.
Forum on trading, automated trading systems and testing trading strategies
Piotr Storozenko, 2025.06.28 09:36
Looking all correct robo use smaller point and tick value and both use same leverage 500
________________________________________________________________________________________________________
Actually RoboForex is not a mistake. Although the price is the same, each broker can define the contract size per lot differently.
Note: There may be some contradiction in the flow of my responses, but it is completely understandable given the complexity of the topic and the fact that I am trying to address several levels of understanding at once: what Piotr needs to know, what Fabio is correcting, and what I want to nuance so that the thread does not get too sidetracked or fall into simplism. That said, sorry for the little mess. It is complex to give an answer that satisfies everyone.
You can obtain the effective leverage of a symbol by using the SYMBOL_MARGIN_RATE value through SymbolInfoDouble.
Although there is no explicit property called ‘leverage’, this value represents the margin factor, and by calculating 1.0 / SYMBOL_MARGIN_RATE you get the leverage applied to the symbol under the current account conditions.
As Fabio said, instead of focusing on leverage, the most direct and reliable way is to work with the tick value (SYMBOL_TRADE_TICK_VALUE), which gives you exactly how much each minimum price movement represents in monetary terms. This is the most useful data if you need to measure financial impact per tick or calculate profit/loss accurately. Leverage is more relevant for margin calculations, not so much for this.
Since when the leverage affects the tick value and profit/loss and not just the required margin?! 🤔
The problem is in tick value. RoboForex is wrong. Tick value (that is expressed for 1 lot operation) is 1.00, not 0.1.
What do you mean Roboforex is wrong? Like you see on pricture with test Program print tick value and point value , below code I use for printing :
Print("Point "+DoubleToString(m_symbol.Point(),_Digits)+" tick value "+DoubleToString(m_symbol.TickValue(),2)+" leverage "+IntegerToString(m_account.Leverage());
Roboforex for gold have 3 digits and ICMarket 2 , and mainly it should show same result 100 points Robo = 10 points ICM 100*0.01 = 10*1
Just as P/L result 10 times bigger
What do you mean Roboforex is wrong? Like you see on pricture with test Program print tick value and point value , below code I use for printing :
Roboforex for gold have 3 digits and ICMarket 2 , and mainly it should show same result 100 points Robo = 10 points ICM 100*0.01 = 10*1
Just as P/L result 10 times bigger
Actually, what you show does not necessarily imply that RoboForex is "wrong". What happens is that each broker may define the contract size per lot differently, even if the symbol and price are the same. If one defines 1 lot = 100 ounces of gold and another 1 lot = 1 ounce, the resulting tick value will be different even if both use the same tick size.
Some brokers ‘dilute’ the contract by reducing the lot size (e.g. 1 ounce instead of 100), and others do so by adding an extra digit to the price. These are different approaches that, in essence, lead to the same economic result per price movement... as long as the lot and tick values are adjusted correctly.
That's why, as Fabio rightly said, using the SYMBOL_TRADE_TICK_VALUE is the most reliable way to calculate the real financial impact of a price movement, regardless of whether you use 2 or 3 digits, or the value of the leverage.
The result of your tests is not an "anomaly", but the consequence of the fact that the volume in lots does not represent the same between brokers, even using the same symbol and leverage. For the results to be comparable, you should also adjust the lot size according to the value of the underlying contract.
2025.06.28 18:23:07.774 2024.01.08 07:55:00 Point 0.001 tick value 0.10 leverage 500 v hedg 100.00 v contract 100.00
Same print for both tests
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hello.
I have coded EA and when start testing figure out strange things ( may be it strange just for me :) ) but want to understand how it possible.
Test in Roboforex :
test in ICMarket :
Positions was opened and closed +- with the same price and same lot , but Roboforex make 161.62 $ lost and ICMarket 16,26 $
When start test I have set same leverage, but decide to add printing information to be sure what program use point / tick value and leverage
roboforex :
icm print :
Looking all correct robo use smaller point and tick value and both use same leverage 500
As for me result should be same for both .
Are there other things that can affect the profit/loss of a transaction?