Strange results of testing

 

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 :

roboforex

test in ICMarket :

icm

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 :

printrobo

icm print  :

printicm

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?

 
Piotr Storozenko:

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.

 
Miguel Angel Vico Alba #:


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? 

Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
  • www.mql5.com
Возвращает соответствующее свойство указанного символа. Существует 2 варианта функции. 1. Непосредственно возвращает значение свойства. 2...
 
Miguel Angel Vico Alba #:

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.

 
Fabio Cavalloni #:

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

Strange results of testing

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.

For example, one may use 1 lot = 100 gold units, and another 1 lot = 1 gold unit. The final result per tick can be matched using different lotting.

So the tick value is not wrong, it simply responds to a different definition of the contract.

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.
 
Piotr Storozenko #: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? 

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.

 
Exactly Miguel, I also did a mistake in my reply. No one is wrong. They just use different tick size and tick value.

Considering they have differences of 10 times one from the other, lot size should be adjusted too. Using same lot size among these brokers will produce that discrepancy...

Using tick value is (almost) always the best option. I know some brokers that from strange reasons provide really wrong value on tick value, making calculations not correct and requiring more complex formulas to make it working properly.
 
Fabio Cavalloni #:

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

 
Piotr Storozenko #:

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.

 
Miguel Angel Vico Alba #:
SYMBOL_MARGIN_RATE

Sorry, but can't find  only  SYMBOL_MARGIN_HEDGED   , also check   SYMBOL_TRADE_CONTRACT_SIZE  and both same for  both brokers 

 

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