MetaTrader 5 Strategy Tester: bugs, bugs, suggestions for improvement - page 2

 

And one more thing: since there is a visualisation mode, why not make it possible to put indicators (most importantly custom indicators), use markup tools and apply templates to the chart?

After MT-4 the chart visualization mode was a major disappointment for me. We need displaying of pending orders as in MT-4. To leave a trace when trailing stop. Marks of orders should be thicker: they are not visible on a 4K monitor (4K has been enabled in the terminal settings ).

 

Suggestion.

Forum on trading, automated trading systems and strategy testing

New version of MetaTrader 5 platform build 2085: Integration with Python and massive improvements in strategy tester

Alain Verleyen, 2019.09.12 17:09

Strategy Tester, Visual mode. I have an EA with a graphical interface (panel). If you click "Go to", the objects in the chart are still drawn/updated, which slows down processing and makes "Go to" almost useless.

If it is possible to add the MQLInfoInteger function (MQL_VISUAL_SKIPMODE)

or automatically disable GUI updating when using "Go To".

Thank you for considering this.


 
Slava:

Thank you. We'll figure it out.

We got it.

Thank you for the data.

 

Is it correct that on exchange symbols in the Tester, TP is accepted at last-price and executed at bid/ask?

It's just that in this situation TP almost always has a negative slippage.
 

The subpage is missing the word "Thank you". I would like to say Thank you for the correct reaction of the tester to changes in symbol properties.

It is now possible to change, for example, the execution type. And the Tester picks it up immediately, without rebooting the Terminal.

 
fxsaber:

Is it correct that on exchange symbols in the Tester, TP is accepted at last-price and executed at bid/ask?

It's just that in this situation TP almost always has a negative slip.

In order not to let myself be fooled, I wrote such OnInit

#define  TOSTRING(A) #A + " = " + (string)(A)
#define  TOSTRING2(A) #A + " = " + EnumToString(A)
 
int OnInit()
{
  const bool Res1 = SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL);
  const bool Res2 = (SymbolInfoInteger(_Symbol, SYMBOL_TRADE_MODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE) &&
                    (AccountInfoInteger(ACCOUNT_MARGIN_MODE) != ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
    
  if (Res1 || Res2)  
  {
    if (Res1)
      Print(TOSTRING(SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL)));
      
    if (Res2)
      Print(TOSTRING2((ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_MODE)) + "\n" +
            TOSTRING2((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)));
  }

  return(Res1 || Res2 || OnInit2());
}

It doesn't allow a single pass to be triggered when TP gives a negative slip.

 

In the screenshot, the highlighted piece corresponds to one day. More precisely, it corresponds to several minutes.

Perhaps the abscissa points should be assigned not only to trades but also to times (optionally)?

 

When the drive runs out of space, the tester does not report anything in the logs.

I use RAM-drive for the tester as it is much faster than the standard version. When you do a lot of single passes, the logs get clogged with rubbish. A request not to output rubbish is heard from time to time on the forum.

Now the request is to tick the "Clear logs before running" box.

 

In pips mode, the maximum drawdown by funds is calculated incorrectly.

The screenshot shows that MaxDDEquity < MaxDDBalance.


If we start the normal mode of analysis where all currencies are equal to the account currency

all values are the same as in the pips mode, but MaxDDEquity shows the correct value.

 
In pips mode, you can run into"not enough money". This should not be the case. "Pip-by-pip implies that you can trade even with a negative balance.
Reason: