I wrote this blog post to teach you what things you should check first when you face any problem with the Expert Advisor, Indicator or script on your MT4 terminal.
To be honest, I am not sure why I did not wrote this blog post earlier. For years people have been contacting me with various problems they have with their Expert Advisors and MetaTrader 4 platform. Obviously, they do have problems with my MT4 apps as well from time to time, but that’s pretty normal because every individual has it’s own knowledge base and there are no one who knows everything.
I’ve been running my software business since 2009 and during those years I have received thousands of email messages with various questions from currency traders. What I have learned during those years is that in most cases there is nothing wrong with the Expert Advisor or even the MetaTrader 4 client terminal. The problem is the lack of knowledge and the shortage of content available online that explains how to solve these problems.
Sure, it is easy to find basic lessons on how to use MT4 platform or even video tutorials on MT4, but as you might already know these lessons cover only the most basic stuff. Of course that is more than enough for anyone to learn and start using MetaTrader 4, but the problem begins when you face some difficulties and something is not working as it should.
I cannot promise that the information I provide in this article will solve all problems you might face with EAs, but I am sure that in most cases you’ll find these simple steps can remove most problems in minutes or even seconds.
Below you’ll find the checklist you should go through before you report any problem you have with MT4 apps. And I do not mean this should be used only on my MT4 apps. This stuff works with any MT4 EA, Indicator or script.
The list of things that are most likely to fix Expert Advisors problems on MT4 client terminal:
Now let me give you as much details as I can on each of those checklist items.
One of the most common problems when running EAs is that MT4 has “Autotrading” option disabled. Obviously that is for your own safety which protects you from any problems that can arise if you accidentally run EA without even knowing much about it. I mean if you are new to MT4 and just started using it, any EA or script might do damage to your account if you use it incorrectly. This is why Autotrading is disabled by default.
Once you are ready to use Autotrading you can enable this option in the top toolbar of your MT4. Look for a button which reads “Autotrading” (in earlier MT4 versions this button was called “Expert Advisors”).
Green “Autotrading” button indicates that Expert Advisors are enabled on MT4.
Red “Autotrading” button indicates that Expert Advisors are disabled on MT4.
So if at any time you want to stop all trading robots running on your MT4 you can simply disable “Autotrading” option. However, not all EAs are created equally. Some may still continue to work and perform some of their operations, but you can be sure that under any circumstances no EA will be able to perform any trading operation if you have “Autotrading” disabled.
Also keep in mind that by default MT4 client terminal will disable Autotrading option once you change “Profile” (File -> Profiles) or log into a different account. This is to protect you from an unwanted EA operations once you change accounts.
Imagine if you are logged into account #1 where you have EA running that is suppose to close all trades when equity drops below 1000 USD. What if you switch to account #2 which has equity of 500 USD? EA would immediately close all positions. For this reason MT4 added this security option and all EAs would get disabled if you change accounts.
This MT4 behavior can be changed from the “Tools -> Options -> Expert Advisors” window. We will get back to this a bit later in section 6.
Autotrading is required for Expert Advisors (trading robots) but not MT4 indicators.
A very common problem is that people do not realize that trading for the EA must be enabled when it is attached to the chart. By default it is disabled for security reasons.
When you attach the EA to the chart you’ll see “Expert Advisor Properties” window like this one below.
If this option is not selected the EA will not be able to perform any trading operations. This means this can also be used as an additional tool if you want to disable certain EA from trading. Sometimes I use this if I need temporary solution to stop EA from trading. It will continue to do it’s job like it normally would, but it will show an error when it attempts to open, modify or close a trade. In such case EA would receive an error code of 4109 (ERR_TRADE_NOT_ALLOWED). In human language normally this is translated as “Trade is not allowed“.
This one is quite rare, but I’ve seen some cases when people set the EA to trade only in one particular direction and then later they forget about this and complain that their EA takes trades only in one direction.
In the example above we see EA is configured to take Long and Short positions (which is default setting), but this option allows you to set the EA trade only in one particular direction. Say if you select “Long only” option then EA will not be allowed to open Short positions. In that case EA would return error code 4111 (ERR_SHORTS_NOT_ALLOWED). In human language this is translated as “Shorts are not allowed“. Alternatively if your EA was set to trade in “Short only” mode then each time it tried to place a Long order you would see error code 4110 (ERR_LONGS_NOT_ALLOWED). In human language that is translated as “Longs are not allowed“.
Many MT4 apps these days are using DLL libraries and usage of them is disabled by default in all MT4 client terminals. This is done for security reasons. You should be careful with MT4 apps that use DLL libraries. You should only use such apps if you obtain them from a trusted software provider.
I know this sounds like a bad thing, but it literally can be, because DLL files can be programmed to have access to all files on your computer. I do not want to scare you off using MT4 apps that use DLL files, just want to let you know how this works.
For example, almost every EA that I’ve created use DLL library file. Obviously I use clean code. The purpose of the DLL is to add a special function to the EA so it could connect to my server for license key authorization. I’ve been working very hard on this to make it as simple as possible and to not annoy customer in any way.
Because my apps use DLL library you cannot run them if you have “Allow DLL imports” option disabled. So if EA you are trying to use does not work, make sure you check if it uses any DLL libraries and if you should enabled this option.
If you try to run Expert Advisor which needs to use DLL library, but you have them disabled by unchecking the “Allow DLL imports” option, you would normally see error message like this in the “Experts” tab.
In the example above I’ve tried to run Hedge EA trading tool with DLL library calls disabled and this is the error I got: Cannot call ‘hedge_ea_18_personal.dll::auth’, DLL is not allowed.
Another problem I face with a DLL files is that they are usually not trusted by Anti-Virus software. There were some cases when my clean DLL files have been detected as false positive for virus. After I contacted anti-virus company and they’ve checked the code of my DLL, it was added to their white-list, but this situation still created unwanted inconvenience.
For this reason I have taken an extra step and requested to get a signed security certificate which is now attached almost to every single app that I create. This creates a “better relationship” with anti-virus programs, but still do not remove a problem of false positive detection in some cases.
My point with this is that even clean DLL libraries can be detected as viruses (even though it’s false positive), but this does not mean you should not be careful. DLL files can definitely contain viruses or other malware code.
Here’s how auto-installer of my Local Trade Copier app looks like with the signed security certificate issued by COMODO when you run it on the computer. Obviously my DLL library files are signed by the same certificate as well.
When such window appears on your computer running my software, you can click “Show details” and you’ll be able to view the certificate and its details. Not many individual programmers are verified. In most cases you only see big software companies have such certificates. Most of the programmers are not verified publishers. I am telling this not to brag, I am saying that you should be careful and watch what software you install on your computer. Also note that such protection appears on Windows computers and only if you have “User Account Control” enabled in the “Control Panel“.
If you are worried that some unknown file on your computer might contain a virus you can check it at VirusTotal – Free Online Virus, Malware and URL Scanner. When you upload a file to this website they will check it with like 50+ anti-virus programs. If you see that almost all of them detect a virus then it is obvious that this particular file is dangerous. If none or just couple of these applications detect your file as suspicious, chances are that it’s a false positive.
Okay, so this one is quite rare, but there still might be EAs that require this to be enabled in order to work properly. Personally I do not use this so my apps do not require import of external experts to be enabled.
If you feel your EA may not work because of this you should try running it with the “Allow import of external experts” option selected in the “EA Properties” window.
Also note, that your EA might start and work properly for some time and only later stop working if this option is disabled. Only the creator of your EA might know how this should be set for sure. Also, this might be explained in the instruction manual if you have received one with your EA.
There is a special settings window in the MT4 that you can access from the top menu “Tools -> Options -> Expert Advisors“.
This is where you can set default settings for EA execution.
In the picture above you can see I have “Allow automated trading” and “Allow DLL imports” options selected. This sets my MT4 terminal to have “Allow DLL imports” selected by default when I attach new EA to the chart (as explained above in section 4).
Also this is where you can configure whether MT4 should disable Autotrading once you log into a different account (or change “Profile“) or not. I have mentioned this in section 1.
This is where most of the problems might be solved. I mean it. This tab logs every action from every EA that is running on your account. Also, EAs are usually configured to print user-friendly error messages in there as well. Of course not all EAs are created equally, but when I create EAs I always try to print as much information as possible to let the user be aware of what’s going on on his MT4 terminal and what problems EA might be facing at the moment.
A simple example is where EA tries to open a position but it fails. To demonstrate how this looks like I am using my Trader On Chart 1-click trading tool. I have set this app to open 100 lot size position and once I click BUY button the app obviously tries to complete this command. However broker server rejects the trade as there is not enough money in the account and TOC app receives a response from the broker server with the error code 134 (ERR_NOT_ENOUGH_MONEY). This simply means “Not enough money“.
Those who check “Experts” tab for error messages might solve their problems faster by themselves. In this particular example it is obvious that we need more money in the account or use a smaller lot size.
Those who do not check “Experts” tab for error messages might not even understand why the trade was not opened. Obviously they would put all the blame on the Expert Advisor. However, in this, like in many other cases, the problem is not in the EA.
Even if your EA gives just an error code with no explanation you can still find out what it means if you look at this list of MQL4 Error codes.
Also, important to mention that all these messages logged in the “Experts” tab are also stored in special log files that can be accessed anytime on your computer. Experts log files are stored in the \Data Folder\MQL4\Logs\
You can also access these log files faster by clicking the right mouse button inside the “Experts” tab and choosing “Open“. Here’s another article I wrote about how to read log files and actually understand them.
When you report any problem with the EA to the company, you should include the log files from that folder.
For me it is very important to solve the problems associated with my software, but I need a little bit of help from my customers as well. Ideally, people should check for any potential solution in this guide and the instruction manual first. If that does not help, I usually ask people to send me the following information so I could investigate the case.
“Data Folder” can be opened from your MT4 platform by going to “File -> Open Data Folder“.
If customer sends me a question “My EA does not work. Why?” I really cannot help much with just this information.
The “Journal” tab is not that useful as the “Experts” tab, but in some cases it might give you quite useful and important information. Let’s take the same example we used before. When “Not enough money” error was logged in the “Experts” tab the same was logged in the “Journal” tab as well.
However, when you troubleshoot EAs, such information might not be useful because this does not tell us if this request to open a position was sent by an Expert Advisor or by a human (manually).
I would say that the “Journal” tab is more useful when you are looking for messages about the connection problems. MT4 logs them here.
Those who check “Journal” tab for error messages might solve their problems faster by themselves.
Also, important to mention that all these messages logged in the “Journal” tab are also stored in special log files that can be accessed anytime on your computer. Journal log files are stored in the \Data Folder\logs\
You can also access these log files faster by clicking the right mouse button inside the “Journal” tab and choosing “Open“.
The most simple way to check if your MT4 terminal is connected to the broker server or not is to look at the bottom-right corner of the terminal window. If it reads “No connection“, or “Invalid Account“, or “Account Suspended“, or anything like that, this means you are not connected and trading is not possible.
When MT4 terminal is connected, it will typically display the counter at the bottom-right corner, which indicates how much data were downloaded from the broker server.
Here’s another great idea how to check whether your MT4 terminal is connected to the broker server or not. If the clock in the “Market Watch” window is running and price quotes are updating constantly then your terminal is connected to the broker server.
If “Market Watch” window is not updating then your MT4 terminal is not connected to the broker server or it is weekend and the market is closed.
Check if your Internet connection has no problems. The most simple way to do this is to open your Internet Browser and visit a few websites on the Internet.
Also, you should close all 3rd party applications that might use high bandwidth of your Internet connection. I have in mind Torrent software and other similar downloader apps 🙂
You can also check with your Internet service provider and ask if everything is okay on their side if you suspect you have a slow Internet connection.
If your MT4 app needs to authorize with the vendor server, make sure there are no Internet connection problems and you can access vendor’s website. Firewall or Anti-Virus software on your computer might be blocking connection.
For example most of my MT4 apps use license key. Once you purchase a software from me you get a license key that must be used with the software. Obviously this license key must be authorized by establishing a connection to my web-server. If any 3rd party software on your computer blocks this connection the EA will not be able to authorize and run.
Not all MT4 apps work that way, but there are certainly many that do so. If you can access this blog post from the same computer where you have one of my apps giving you trouble with the authorization, this means your connection is good and the problem is somewhere else. Then you should double check if you enter correct license key and if there are no spaces or other characters around it.
If you are using software from someone else you should contact that particular company/author.
It cannot be more simple than this, yet many people do not think about it. If you tried most or all of the things discussed on this page and you still experience problems a simple MT4 restart might solve the problem.
To restart MT4 you simply need to close the main MT4 terminal window and after 15-30 seconds start MT4 again.
If things look weird with MT4 window or it cannot respond at all, you should check if there are no MT4 process “stuck” in memory. With the latest MT4 version this does not happen much, but still there is a chance.
To check if there is an MT4 process stuck in memory you need to open “Task Manager” window by clicking right-mouse button on the bottom task bar and choosing “Start Task Manager“.
Once “Task Manager” window is loaded you need to switch to the “Processes” tab and see if there are any “terminal.exe” processes on that list. Sorting the list by “Image Name” helps a lot in this situation.
If you have all MT4 windows closed and you see terminal.exe processes on this list you should end them. To end a process you need to select it and click “End Process” button. When you end all terminal.exe processes you can start your MT4 terminal. You should end processes in such way only if you feel your MT4’s are stuck in memory and do not respond or even do not show main window.
I have discovered this problem last year. Basically it sounds like this. If you are running MT4 client terminal on a multi-core CPU machine then all MT4 terminals might work very slow. This seems to be the case only on those computers and VPS servers that have multi-core CPU processors. I have already explained how to check and solve this problem in detail in another blog post and people call it the most effective solution to speed up your MetaTrader 4 platform.
Okay, I admit that this is the most boring thing to do in the world. I’ve never read instruction manual before in my life until I was forced to write one for my MT4 app. Yes, that’s true. I know how boring that is and that most people think it is a waste of time. But believe me, instruction manuals are written for a reason. Actually that’s pretty obvious. If you get an instruction manual of 100 pages do not freak out. It might be that 80% of that document is just pictures and you will read it all in just 10 minutes or so.
Also, if you scan through the table of contents you might see that some sections of the manual is not relevant to you at this moment and you can just read the ones that are important.
And my favorite method of reading instruction manuals is that I read first few pages, which usually contain the most important information, and then I just read the headlines of other pages. If I find that this is relevant for me I will read the entire page.
For example the instruction manual of my MT4 trade mirroring software is quite long, but there are sections that explain things like “How to create an image of your MT4 terminal” which might be not relevant to many people. It won’t do any harm if you skip this, and when you finally need to learn this you’ll know where to find it.
Also, I always use search feature to find things I need. For example you want to find out what UseSmartBreakout option does in my Trendline Trader software. It would be quite boring to read all the instruction manual so you can just use search function (Ctrl+F in Adobe Reader) to find this text and read only what interests you.
When you contact your FX broker you expect them to respond fast. Many brokers even offer live chat support. I’ve been using this a lot lately and I must say it’s awesome. You can open websites from 20 different brokers and copy/paste the same question to all of them almost at the same time. In just a few minutes you’ll have an answer from all of them. So this saves you hours of your time as you do not need to read all of the content on each website.
However, when you contact technical support team of one person, like for example me, then it’s obvious that he will not be able to answer instantly. If all 8 work hours a day that I have would be dedicated to answering questions then yes, I think I would be able to answer emails in minutes and even offer live chat support. However, I also need to improve my software, create new features, fix bugs, analyze tons of log files that I receive from my customers and I have only 8 hours a day for all this.
Yes, I could hire someone to do the support, and I’ve tried that last year. It did not work well because I was reading emails and because of that I was not familiar with the problems my customers have, and in the end I still had to answer many of the technical questions myself as I am the only programmer and creator of my apps.
Of course, if none of the above helps and you cannot find any solution to your problem in the instruction manual, and there is not much help on the vendor’s website, then you should contact support team with whatever questions you have. I cannot speak for others, but I know that I always do my best to answer every single email I receive. Obviously priority goes to those who have purchased my software.
All computer application have problems from time to time and this is inevitable. What’s important here is if you receive help from the software creator or the company that sold you the software. However, keep in mind that many problems come from misunderstanding and if you can spend 5 minutes to solve the problem yourself then do it. From my point of view it is easier to find an answer and solve the problem in minutes by yourself than contacting technical support team and waiting for 12-72 hours until they respond. Obviously not all questions are equal. Some might be answered only by technical support team.
I hope this short guide will help you solve problems when running your Expert Advisor on the MT4 client terminal.
Please share your thoughts in the comments below and let me know if you think anything is missing in this guide.
What is Metatrader 4? MetaTrader 4 is one of the leading platforms in the world…
In this MT4 tutorial, Rimantas explains how to download MetaTrader 4 and open Forex demo…
There you'll find video tutorials for the Equity Sentry software for MT4. (more…)
There you'll find video tutorials on how to install and use the Trader On Chart…
There you'll find video tutorials on how to install and use the Trendline Trader EA…
Installing and running multiple MT4 client terminal instances on the same machine is easier than…
View Comments
Great article! I explained me plenty of things.
Thanks.
Cesta
Cesta, I am glad this was useful for you.
Regards, Rimantas Petrauskas
Hello Rimantas,
very good article!!! Thank you.
Regards
Pierre
Pierre, thanks for your feedback.
Regards,
Rimantas Petrauskas
pls I had a problem with Expert Advisor of metatrader 4, pls the journal show a text I don’t arrived to understand, pls can you give me some information for to go further ?
pls here we are this text:
2015.06.27 09:58:33.062: TestGenerator: unmatched data error (low value 0.93088 at 2015.05.08 23:00 is not reached from the least timeframe, low price 0.93168 mismatches)
2015.06.27 09:58:30.062: History: download USDCHF,M15 [2014.10.23 18:15]
Can you help ?
Best regard
toussaint
Hi, I think this might help:
1) Close MT4
2) Delete all price data history from the "Data Folder" of that MT4
3) Open MT4 again
4) Download price data again
If this does not help you might want to ask your broker or MetaQuotes support for help.
Very good and useful article, especially for new guys who face problem with learning how to use robot and so on.
Kind Regards,
Valdis Hinkov
Thanks for your feedback, Valdis.
Hi Rimantas,
Nice article but doesn't solve my problem. Maybe because my problem is so unique in nature.
I'm not using MT4 to do automated trading. I just use it to look at the charts. So obviously, my MT4 is not connected to my trading broker. I take price data from a different broker and trade with a different broker. So obviously, while I've allowed autotrading and allowing DLL imports and the expert advisor is running with a smiley face but it does not give any alerts when it gives a signal.
I want my expert advisor to give me an alert when a buy or a sell trade needs to be done so that then I can have a look at the charts and then decide on my own whether to do it or not.
Please help me.
Vikas,
Dear Vikas,
I wouldn't call that a problem. It simply sounds like your EA does not have such functionality built-in. You would need to hire a programmer to do this for you.
I can recommend a few programmers.
http://emet-trading-solutions.com/
http://www.mrmetatrader.com
Regards,
Rimantas
Huge thanks for your time.
It is an amazing explanation and dedication!
Thanks for your feedback. I am glad you like my work.
Great guide for all traders who are using automated trading. It describes most common problems and solutions in detail. I am a programmer myself and I know how hard it is to explain these things to unexperienced users, but this guide really does it.
Marcin, thanks for your feedback ;-)
This is great - thank you! My immediate EA problem is solved and I can see where to look for problems in future.
I am glad you've found my article useful, Kate.
Rimantas
i was happing problem with my mt4 auto trader. Hope this article will help me in resolving it. Thanks a lot
This piece of writing provides clear idea for the new people of blogging, that in fact how to do blogging and site-building.