Download MetaTrader 5

Testing Visualization: Trade History

16 January 2007, 09:50
Andrey Khatimlianskii
1 942

1. Motivation

Starting from build 196, MetaTrader 4 Client Terminal offers testing visualization function. It allows controlling the Expert Advisors' testing on a brand new level. Now, the trading programmer can watch every action of his or her Expert Advisor checking its operation on history!

You can read about how to use the visualizer in Testing of Expert Advisors in the MetaTrader 4 Client Terminal: An Outward Glance.

In my previous article named Testing Visualization: Functionality Enhancement, it was described how to realize the "Trade" tab for testing. We will add the "Account History" tab to it here.

2. The Task and How to Realize It

First of all, we will have to reconcile ourselves to that we cannot create a shadow copy of the "Account History". To create it, we would have to write a complicate program using dlls. But we do not need this at all since the "Test Results" tab of the Tester contains almost the full information about operations made.

Our task is to display actual information. This can be very convenient when analyzing the Expert Advisor's work. There will be no need to switch between tabs all the time.

Since there is not very much space in the display and realization of scrolling is not a very simple task, we will only display the most recent events.

What is left, is to remind that, to create a subwindow where the history will be displayed, it is necessary to create an indicator and, having attached it to the chart, create the template named tester.tpl or in the template <expert_name>.tpl (you can download the indicator directly from this article).

Saving a Template for Testing

Saving a Template for Testing

Now we can start to prepare the Expert Advisor.

This is not very difficult either:

  • Save the VisualTestingTools.mq4 file in the directory named ...\MetaTrader 4\experts\include\;
  • Add the #include <VisualTestingTools.mq4> line to the Expert - now the file content is included into the Expert's code; and
  • Insert in the Expert's init() and start() functions the calls for functions responsible for trade history updating.
double _Commission = 0.0; string _Comment = ""; datetime _Expiration = -1;
#include <VisualTestingTools.mq4>
int init()
    if(FastEMAPeriod >= SlowEMAPeriod) 
int start()
    if(FastEMAPeriod >= SlowEMAPeriod)
    int _GetLastError = 0;

3. Testing

Now, let us try to test the new Expert. For this, open the Strategy Tester window, select the CrossMACD_DeLuxe_VisualHistory in the Expert's menu and press its properties button.

Strategy Tester Window

Strategy Tester Window

The Expert has got some new external variables - they are declared in an included file named VisualTestingTools.mq4. Some of them are intended for controlling the "Terminal" tab, the other ones - for the "Account History" tab, but most of them are common:

  • TerminalRows - the maximum amount of the "Terminal" tab lines to be displayed. If you make TerminalRows = 0, the terminal will not be updated;
  • HistoryRows - the maximum amount of the "Account History" lines to be displayed. If you make HistoryRows = 0, the account history will not be updated;
  • BigText - set true if you want to make the fonts larger;
  • SignalPoints - the distance, in points, starting from which the Stop Loss, Stop Profit and Open Price fields of pending orders will be highlighted. For example, if SignalPoints = 10, the Stop Loss field will change its color when the price is at a 10-point distance from the Stop Loss of the position;
  • ShowCancelled - set true if you want to see the cancelled orders in your trade history;
  • ShowExpired - set true if you want to see expired pending orders in your trade history;
  • MainColor - color of headlines of the Terminal and Account History, as well as the Terminal's trade account information bar (Balance, Equity, ...);
  • BuyColor - color of information about Buy positions;
  • BuyOPColor - color of the Open Price field of the Terminal tab; this color will replace the main color when the current price approaches to the open level of orders Buy Stop and Buy Limit ;
  • BuySLColor - for the Terminal tab: color, which will replace the main color when the price approaches the Stop Loss levels of Buy positions; for the Account History tab: color, which will replace the main color if the Buy position has been closed by StopLoss;
  • BuyTPColor - the same as BuySLColor applied to the Take Profit of positions;
  • SellOPColor, SellSLColor and SellTPColor - the same for Sell positions.

Set the desired values of variables and press OK. Check whether Visualization is enabled and start testing:

Testing Visualization: 'Terminal' and 'Account History' windows have been loaded

The EA has opened a position, and this is visualized in the 'Terminal' window

As soon as the position has been closed, it moved to the 'Account History' and was replaced with another one. Note that the StopLoss field is highlighted in red - the position was closed by Stop Loss.

The second position has been closed by Take Profit. Note that the latest positions are shown on top in the Account History. Thus, we will always see the most recent events.

This is how our virtual Terminal looks after several minutes.

4. Possible Problems

The problem described in my article Testing Visualization: Functionality Enhancement applies to the vHistory indicator, as well: If the indicator is not in the second subwindow in the template used by the Tester, the proper operation of functions responsible for Account History updating should be provided by the explicitly specified subwindow number:

vHistory_win = WindowFind( "vHistory" );
    if ( IsTesting() ) { vHistory_win = 2; }

5. Conclusion

Screenshots that illustrate how the Account History tab looks in various situations are given below.

Translated from Russian by MetaQuotes Software Corp.
Original article:

Last comments | Go to discussion (9)
Maria Sountsova
Maria Sountsova | 26 Jan 2007 at 07:08

You did an excellent job translating the article.
Thank you very much.
Thank YOU very much! The feedback is very important for us. There is not so much text, though. I suppose reading the articles like "My First Grail" or "What Is a Martingale" where there are no or just a few pictures, but much text, you would probably say it's more difficult to read. But I try to do my best. ))
Maria Sountsova
Maria Sountsova | 26 Jan 2007 at 07:09
Yeah, good job, in fact I didn't even notice when I read though the first time that it had been translated.
If I read it very carefully some of the phrases are a little odd, but overall a huge improvement!
Thank you, Craig. As I replied to cnotation, I try to do my best. ))
MQL4 Comments
MQL4 Comments | 24 Aug 2009 at 06:24
Hi, great ea. Can think of one improvement. In order to test multiple entries for say a number of days, weeks etc, and checking these at certain intervals, one could add another input to pause the program at a certain time intervals. i.e every 4 hours or at a specified time. This would preserve the test data.
MQL4 Comments
MQL4 Comments | 26 Jun 2010 at 14:03

Hello Everyone,

I just received this: from a guy named Jim Standford and is found @ ...

Genetic Algorithm Technology

... they've already hatched behind closed doors has SOLVED the one big-time weakness that cripples other forex "A.I. robots" you've tried.

That weakness is... these outdated robots can only "think" and "adapt" with the "rules" the human programmers who put them together programmed in.

So if you've watched some of these "smart" forex robots bite the dust after just a couple weeks of trading...

Now you know it's NOT your fault, because if all they had under the hood was some geek's idea of a "winning strategy"... it's

Questions: Do we have an EA like that? Thankyou in advance ...

MQL4 Comments
MQL4 Comments | 29 Jun 2010 at 02:31

Amazing! What an excellent job ... Keep up the good work, Dude ...!

Step on New Rails: Custom Indicators in MQL5 Step on New Rails: Custom Indicators in MQL5

I will not list all of the new possibilities and features of the new terminal and language. They are numerous, and some novelties are worth the discussion in a separate article. Also there is no code here, written with object-oriented programming, it is a too serous topic to be simply mentioned in a context as additional advantages for developers. In this article we will consider the indicators, their structure, drawing, types and their programming details, as compared to MQL4. I hope that this article will be useful both for beginners and experienced developers, maybe some of them will find something new.

Here Comes the New MetaTrader 5 and MQL5 Here Comes the New MetaTrader 5 and MQL5

This is just a brief review of MetaTrader 5. I can't describe all the system's new features for such a short time period - the testing started on 2009.09.09. This is a symbolical date, and I am sure it will be a lucky number. A few days have passed since I got the beta version of the MetaTrader 5 terminal and MQL5. I haven't managed to try all its features, but I am already impressed.

Portfolio trading in MetaTrader 4 Portfolio trading in MetaTrader 4

The article reveals the portfolio trading principles and their application to Forex market. A few simple mathematical portfolio arrangement models are considered. The article contains examples of practical implementation of the portfolio trading in MetaTrader 4: portfolio indicator and Expert Advisor for semi-automated trading. The elements of trading strategies, as well as their advantages and pitfalls are described.

False trigger protection for Trading Robot False trigger protection for Trading Robot

Profitability of trading systems is defined not only by logic and precision of analyzing the financial instrument dynamics, but also by the quality of the performance algorithm of this logic. False trigger is typical for low quality performance of the main logic of a trading robot. Ways of solving the specified problem are considered in this article.