Profit calculation incorrect in mt5 - very bad bug

 

If i understand correctly from previous forum posts, the way profit is calculated in tester is converted to your account currency based on current coversion rate and not the conversion rate at the moment of the trade.

i.e. if i am testing a multicurrency ea, with account currency in USD for example, the EURGBP pair results will change every day i test based on current exchange rate (e.g. it will have a different result if i test again in 1 week or 1 month), while EURUSD for example will remain the same.

I am wondering why is it this way and why people are content with this? in my opinion this is a bug as it is not documented anywhere other than some forum responses.

The most accurate way to test would be to get profit exchanged at time of trade (which is what would happen in real life). Anyone has done a workaround to calculate that or know of an easy way to do it?

 
The common method of converting profits in backtesting to your account currency based on the current exchange rate, rather than the rate at the time of the trade, prioritizes speed and consistency. While it may differ from real trading conditions, this approach ensures consistent results and simplifies the backtesting process. Implementing a feature for historical exchange rates at the time of the trade may add complexity and reduce user-friendliness. Traders seeking greater accuracy may need to explore custom scripting or specialized backtesting platforms.

Hope this answers your question.

 
Oleksandr Medviediev #:
The common method of converting profits in backtesting to your account currency based on the current exchange rate, rather than the rate at the time of the trade, prioritizes speed and consistency. While it may differ from real trading conditions, this approach ensures consistent results and simplifies the backtesting process. Implementing a feature for historical exchange rates at the time of the trade may add complexity and reduce user-friendliness. Traders seeking greater accuracy may need to explore custom scripting or specialized backtesting platforms.

Hope this answers your question.

thanks for your reply, while i get that it probably might be a bit faster, i dont understand how it is more consistent? If anything it is creating inconsistencies in the results based on date of testing which is def not user friendly as i spent a lot of hours trying to debug my own code when it was an undocumented issue with mt5 itself.

regarding the using specialised backtesting platforms, what would that be? I thought mt5 was a specialised one, do you know of any such specialised platforms that dont use this approach?

 
MT5 is the best in retail space. By converting profits based on the current exchange rate, backtesting results remain consistent regardless of when the testing is conducted. This means that if you rerun the same backtest at different times, you'll get the same results. However, I acknowledge that it may introduce inconsistencies in terms of comparing results across different dates of testing, which can be frustrating.
 
Oleksandr Medviediev #:
MT5 is the best in retail space. By converting profits based on the current exchange rate, backtesting results remain consistent regardless of when the testing is conducted. This means that if you rerun the same backtest at different times, you'll get the same results. However, I acknowledge that it may introduce inconsistencies in terms of comparing results across different dates of testing, which can be frustrating.


Consistent with what? am sorry but your answer makes no sense. Running a test  using the same code simulating the market for the period of Jan 1st 2022 to Dec 31st 2022 should yield the same result indpendent of what is the exchange rate is today, that would be a consistent result. Having it change depending on if i ran the test today or in 1 week makes no sense.

I cannot fathom how no one is complaining about this more voacally. If I am doing a multiday improvement to my model, i need to constantly recreate the baseline on daily basis now to understand what impact my changes have. Thats wasted time and effort. 

I repeat this should be clearly documented so users understand the situation and not to have to waste hours debugging it, or if its a bug then fix it.

Now i have to spend hours trying to figure out a manual solution or move to python... for something that would have been probably easy to implement for the developers as a feature that gets turned on or off depending on preference (why anyone would prefer current implementation for reasons other than speed is beyond me).

 
Your frustration is understood, and it's indeed unfortunate that MT5 lacks a more customizable approach to address this issue. However, it's crucial to remember that markets are not solely about backtesting - the ultimate goal is profitability. Robust strategy stays robust regardless of the simulation method. Also to mention, while python may offer more flexibility, it's essential to consider the potential costs associated with such a transition.
 
vanbass #:


Consistent with what? am sorry but your answer makes no sense. Running a test  using the same code simulating the market for the period of Jan 1st 2022 to Dec 31st 2022 should yield the same result indpendent of what is the exchange rate is today, that would be a consistent result. Having it change depending on if i ran the test today or in 1 week makes no sense.

I cannot fathom how no one is complaining about this more voacally. If I am doing a multiday improvement to my model, i need to constantly recreate the baseline on daily basis now to understand what impact my changes have. Thats wasted time and effort. 

I repeat this should be clearly documented so users understand the situation and not to have to waste hours debugging it, or if its a bug then fix it.

Now i have to spend hours trying to figure out a manual solution or move to python... for something that would have been probably easy to implement for the developers as a feature that gets turned on or off depending on preference (why anyone would prefer current implementation for reasons other than speed is beyond me).

If you use points instead of currency as result, it will be consistent.

What you can do is implement your own calculations to give you the actual profit/loss. That could be added to the positions in the comment, as they are not exposed to a broker.
 
Dominik Egert #:
If you use points instead of currency as result, it will be consistent.

What you can do is implement your own calculations to give you the actual profit/loss. That could be added to the positions in the comment, as they are not exposed to a broker.

 from what i understand, profit in pips would be even less accurate result as it excludes commissions and swap costs (also not clear how exactly it gets to final result then, does it use current exchange rate?)

 here link discussing it: https://www.mql5.com/en/forum/361259. I guess the only solution would be indeed implementing my own or moving to a different platform, was hoping that there would be some code that can be reused for that to avoid starting from scratch...

Not sure about the point of putting it in a comment? I assume would have to use a custom criterion for the optimisation and somehow make sure the real profit loss is produced there.

 Still dont understand why not just give this option in mt5, it makes much more sense than calculating results based on today´s exchange rate (no one makes profit based on a future exchange rate)

what's "profit in pips for faster calculations" on strategy tester in MT5?
what's "profit in pips for faster calculations" on strategy tester in MT5?
  • 2021.01.26
  • metamitsu
  • www.mql5.com
what's "profit in pips for faster calculations" on strategy tester in MT5? Is it more accurate way of calculating profit...
Reason: