Articles by: David Williams

MetaTrader 4 Expert Advisor Builder (VTS)

Visual Traders Studio (called VTS for short) is a free-range, unrestricted Expert Advisor Builder for the MetaTrader platform.

VTS is a Do-It-Yourself EA Builder.

With VTS, you do not need any MQL programming experience to build your Expert Advisor.

Drag, drop and connect. That’s how you build an Expert Advisor with VTS.

And VTS allows you to create any EA.

Other EA Builders are like fill-in-the-blank entry forms.

You fill in the blank and it replaces your text with MQL code. It’s like the “find and replace” box you see in every text editor.

VTS MT4-EA Builder
You quickly discover the “text-substitution” method is too shallow. It just doesn’t work if you’re not able to force your EA into a single, one-size-fits-all pattern.

VTS Does Not Limit You:  it is Not a Fill-in-the-blank EA Builder.

VTS has a drawing pad that allows you to connect elements on the drawing in any way. And you can create your own drawings and then connect your drawings in any way.

There simply are no limits with VTS.  That’s what I mean by an unlimited, unrestricted, free-range EA builder.

Should You Build Your Own Expert Advisor?

When General Eisenhower was asked how he planned military campaigns, he replied: “In preparing for battle I have always found that plans are useless, but planning is indispensable.”

So, how is war-time planning related to your Forex trading?

Blindly following somebody else’s plan almost never works. Stick with me here and I’ll explain.

Have you ever purchased a black-box Expert Advisor that has great ratings? Impressive back-tested performance on multiple currencies and time frames. And great live results as well.

(I swear every time I read about one of these EA’s I’m tempted to buy it.)

Then you run the EA, only to have it perform miserably.

One reason running a black-box EA rarely works is that the trading system is (at best) the initial plan. In order to make adjustments, you must have a complete understanding of the system’s rules (theoriginal plan).

Consider this. When your create a trading system you understand the reasoning behind every rule.

And it’s likely that some of your blood was spilled defining and refining each and every rule.  You don’t easily forget these lessons or the rules that result from them.

This experience can’t be transferred through a written list – or even programmed into an Expert Advisor.

Too many nuances. Too much inside-information, learned the hard way, is baked into each rule.

My advice: Don’t trade someone else’s EA unless you can talk to them every day about its performance.

Do-It-Yourself: Where and How to Start

Start now. Start today!

You may have every rule of your EA already written down, or you may be starting with a blank sheet of paper.

Either way VTS can help. If you’ve already got your rules, we have easy ways to implement them. If you are short on ideas, we have lots of strategies.

Be warned: Building an Expert Advisor is a serious skill. It takes time and effort to learn just like any other skill. That’s why I say “get started today”.

Tomorrow, next week and next month will come regardless of what you do. But wouldn’t it be nice if this time next week you could build your own EA? If this time next month you could build any EA?

I have created an offer that literally removes all of your risk.

You just need to decide if you’re willing to put in the effort. If you don’t understand that building an EA requires learning a new skill then VTS is not for you.

Why Should I Use VTS?

VTS is in its 3rd generation and has sold in more than 70 countries.  Thanks to the feedback I receive from my passionate user base, I’ve been able to continuously improve VTS over the last 6 years.

You should use VTS for its power – you will never need another EA builder, and because of my commitment to improving VTS based on your feedback!

Do You Want to Know More About my Expert Advisor Builder?

Here are just some of the highlights of VTS.

First off, Elements are the basic building blocks in VTS. There are only 5 of them, but you can build any EA with them!

Start and End Elements are used to start and end a drawing.
Varible Elements are used to store data.
Logic Elements are used to add conditional logic (if-then logic).
Function Elements can execute any of the MQL platform functions (indicators, price, ordering) plus tons of other functions (you can even create your own).

Here is a screenshot of VTS showing the Drawing Pad and each Element type.

VTS Drawing Pad


Sorry, Not All MetaTrader’s MQL Functions are Equal

There’s no way around it, some of MetaTrader’s MQL functions are really hard to use.

Since I wanted to make all MQL functions available from the VTS toolbox, I placed the hard-to-use functions on an Advanced menu.  This way, these MQL functions are there if you ever need them, but they don’t get in your way.

Also, I did something else. For the really useful MQL functions that are hard to use, I created custom dialogs to help configure them. I did this for functions like OrderSend, OrderModify, and OrderClose.

This is a screenshot of my dialog used for closing an open trade.  It helps you configure the MQL function OrderClose.

MQL OrderClose Function Parameters


Tricky MQL Techniques Made Exceedingly Simple

You can test for a cross-over using any MQL indicators or price values just by selecting the CROSS_UP or CROSS_DOWN operators. (Note: I created the CROSS_DOWN and CROSS_UP operators for VTS, they do not exists in the MQL programming language).

Logic Element with CrossOver test

Now, take a look at this.  For any MetaTrader MQL indicator function, or any custom indicator function that you’ve imported on your MetaTrader platorm, you can:

+ Get the Highest or Lowest value of any indicator for the last N bars (where N can be any number – I call this a Channel).
+  Find out if an indicator is trending Up or Down.
+  Get the average value of any indicator over any number of bars for any timeframe.

You do all this from a simple dialog.  Here is a screenshot with the MQL function iAC.

MQL Indicator function iAC Power tab


The Ultimate Workaround For You: The MQL Element

Suppose you have the MQL code of a function you’ve used before and really like. Who knows?  Maybe your brother-in-law wrote it for you, or maybe you downloaded the code from a MetaTrader forum.

You can copy and paste the MQL code into an MQL Element. And get this: if it’s a function, VTS will create a new Function Element from the code.  If it’s just a few lines of useful MQL code, VTS will save it that way and allow you to add it anywhere on your drawing just like any other Element.

You can paste anything into an MQL Element. You can even paste the MQL code for an entire Expert Advisor.

MQL Element with MQL code using function Print


You Can Send Alerts and Emails, Write Messages to the Price Chart

All Elements have a Message tab that allows you to send messages from anywhere on your drawing.  You can even generate sounds using the sound files that are included in your MetaTrader platform.

MQL Function iADX message tab


Equation Editor

Take advantage of MT’s powerful mathematic functions using the Equation Editor.

Expression Editor using MQL function MathAbs and MathExp

Make Your MetaTrader Platform Hum

Here is a list of more VTS features:

VTS always creates readable, editable MQL code.
WYSIWYG drawing of MQL code. See the actual MQL for what you draw and connect. (WYSIWYG stands for What You See Is What You Get).
And yes, you can edit and rebuild the MQL with the MetaEditor just like any other EA. (The MetaEditor is included in the MetaTrader platform.)

Reuse created and configured Elements and Drawings via the Toolbox
All Elements are available from the Toolbox for easy re-use. Just drag and drop them from the Toolbox on to the Drawing Pad.

Wizards for getting started quickly:

Test Wizard:  This wizard is used to test your MetaTrader platform for opening and closing Trades. (Demo accounts only! You don’t want to run this on a real account. But don’t worry you can’t – VTS builds the code so it only runs on Demo MetaTrader accounts).

EA Wizard:  This wizard is used to quickly build a simple EA. As you complete each step of the EA Wizard, VTS creates a drawing and adds and connects each Element.  Then you can switch from wizard mode to drawing mode and edit your drawing.  Pretty cool, huh?

CIA Wizard:  This wizard is for analyzing any of your Custom Indicators.  This is the first step toward using any of your Custom Indicators within an EA.

Advanced indicator analysis 
Get the channel break, moving average, or trend up/down for any MetaTrader indicator.

Complex logical conditions
Use a tick count to validate any logical conditon. Or force a condtion to be true more than once (or any number of times) before declaring the condition true.

Custom VTS order-control functions
Easy-to-use dialogs for OrderSend, OrderClose, OrderModify and OrderSelect.

Stoploss and Takeprofit values can be price values or offsets
With the easy OrderSend dialog, you can set the Stoploss and Takeprofit value to an offset like “20” or a price value like “1.3544” – or the Close price of the last bar.

Your Account balance or margin can be used to calculate lot size, stoploss and takeprofit
With the easy OrderSend dialog, you can use your current Account values to automaticallly calculate Lot, Stoploss and Takeprofit values. (Your account values are found automatically using the MQL functions AccountBalance, AccountMargin, AccountFreeMargin, AccountCredit and AccountProfit.)

Partially close orders
The easy-to-use OrderClose dialog allows you to close part of an open trade (like 1/2 of the trade, or 3/4) and it calculates the correct lot size for your platform. (This uses an MQL function that I wrote called fnFixLots.  It makes sure youe EA does not attempt to open or close a trade with an invalid lot size.  The dreaded error 131: ERR_INVALID_TRADE_VOLUME)

Time based rules
The Trade Time Manager allows you to set rules for any period of time.  Rules like:
+ Close all trades,
+ Don’t open any new trades,
+ Close all Buy trades, and more …
And you can set a GMT offset so you can synchronize your PC with your MetaTrader broker’s platform.

Next Trade Signal rules
Add addtional logic for any trade signals generated after one trade has already been opened. Rules like:
+ Don’t open anymore,
+ Wait N minutes or N Bars to open another trade,
+ Only open if the last trade was a winner,
+ Only open if the last trader was a loser, and more …
And, these rules can be combined: if the last trader was a winner, wait 30 minutes to open …

Built in MT Platform and Editor
You can run your MetaTrader Editor (MetaEditor) and your MetaTrader platform inside of VTS.

Easy Choose menus
Whenever a selection needs to be made in VTS, there is an easy Choose menu that’s used to locate any available values (including built-in MQL variables).

Create and share your own strategy templates
After you’ve cerated a solid EA, you can use this as a starting point for any new EAs, and you can share it.

Add Input parameters to your Expert Advisor
Use the VTS Input Manager to add input parameters to your EA.  These are the parameters that you can set each time you attach your EA to a price chart. These values can be used for any purpose, including to configure an indicator, like setting the Period of a Moving Average. Also, these parameters can be optimized using MetaTrader’s build-in backtester, the Strategy Tester.

Trailing stop
There are two easy ways to add a trailing stop to your EA using VTS:
1.  On the OrderSend dialog, there is a checkbox. That’s it – just check the box.
2.  I created a Trailing stop function you can drag, drop and connect anywhere on the pad.

Continuous Updates and Self-Updating Application to Keep up with Changes to the FOREX Market and Changes to the MetaTrader Platform

Life Time Guarantee In my opinion, this is the most important feature of VTS.  I provide constant and regular updates.  Most of the time these updates are based on feedback from traders like you.  VTS is a living product.


One example of this is the ECN Feature Update I just introduced.  ECN Brokers force an Expert Advisor to open trades with zero values for the stoploss and takeprofit.

If you want your trade to have non-zeros stops, you need to open it using OrderSend with 0’s for the stop values and then immediately call the MQL function OrderModify on the next tick to add the stop values.

Well, I added all of this complex code to VTS, so all you have to do is set ECN=true to get this functionality.


Watch my MetaTrader Expert Advisor Builder in Action

Here is a short video I created that gives an overview of VTS.


30-Day Money Back Guarantee

iExpertAdvisor 30-day Money back I personally create all of my own software products so I have no problem standing behind any of them.Even at only $30, there is still no risk for you. If you are not happy with VTS, let me know and I’ll refund your order. No questions asked.


Click Here to Order and Start Building Your EA Today!


Warm Regards,
David Williams

CEO iExpertAdvisor, LLC

P.S. There is NO RISK at all for you to try the VTS EA Builder. If you are not thrilled with the power and flexiabilty of VTS, let us know and we’ll refund your order. Your satisfaction is 100% guaranteed. VTS has already been trusted by thousands of traders in over 70 countries, and I gaurantee that it will work for you too!

P.P.S. If you are sick and tired of running someone else’s trading system, or you are struggling with turning your system into an EA, then use VTS to turn your unique trading ideas into a working Expert Advisor.

Click here to order your copy of VTS today and start getting the results you deserve

MQL For Traders: Learn MQL Programming

MQL For Traders Ebook: Step-by-Step Learning

Learn To Build a MetaTrader Expert Advisor in One Day! This book is a 112 page step-by-step tutorial designed to teach anybody how to program in MQL in about 1 day.

What is MQL For Traders?

MQL For Traders: Learn To Build a MetaTrader Expert Advisor in One Day

MQL For Traders: Learn To Build a MetaTrader Expert Advisor in One Day

About This Book

Learn MQL today. This book makes no assumptions about the MQL programming experience of the reader. The goal of this book is to teach a trader, with no programming experience, how to build a moderately sophisticated Expert Advisor in a single day.

This book is broken into modules, where each module addresses a specific goal. Generally each module builds upon information presented in previous modules.

At the start of each module, the objective of the module is defined along with a list of what will be covered. This is done so that a module can skipped if the reader is familiar with the objectives. Similarly, a module can be reread if the needed.

In order to meet the requirement of teaching a trader to build an Expert Advisor in a single day many subjects are quickly reviewed. This does not mean the subject is not important – but it is not so important that a complete and thorough understanding can’t be delayed until our first objective is met.

Within the module sections of the book, I have purposely tried to leave out as much information as possible. You don’t hear that every day! In other words, the module sections of the book introduce only the information that is essential to learn how to build an Expert Advisor.

The appendix of the book is used to provide deeper information on selected topics along with expanded examples. Where appropriate, there are references to the appendix throughout the module sections of the book.

If your goal is to reach the point where you can build an Expert Advisor as fast as possible, then ignore all references to the appendix or advanced topics.

If you have more time and are interested in increasing your depth of MQL programming, then spending the time to review the advanced information in the appendix will be time well spent.

Note: The appendix of this book is a living document. Updates will be made to the appendix based on user feedback and the introduction of new programming techniques.

I have gone through great effort to not use words or phrases specific to programming or MQL without defining them first. If you come across a word or phrase that you do not understand, and it is not defined in the book, it is probably not specific to programming or MQL. If you cannot find the meaning of a word, or you think it is a missed definition, please email me at:

 Who Should Read MQL For Traders?

Traders interested in building their own winning Expert Advisor.
Anybody interested in learning how to program in the only free trading system programing language: MQL.
Are you a chart-watching discretionary trader?  Read MQL For Traders to learn how to automate your manual trading system.

Are you new to FOREX trading? Learn the inherent advantages of mechanical system trading. Get started off on the right foot and start running a winning trading system immediately.

Read the Preface of MQL For Traders below.


Writing the computer code to create an Expert Advisor has some similarities to writing a grammar school essay. They both have a very specific goal. For the Expert Advisor, the goal is to automate a trading system. For the essay, the goal is to communicate some information.

Each of these goals can be reached in many ways.

But when we are young – learning to write an essay for the first time – we are given a well-defined structure to follow. We are strongly advised to follow the rules of grammar until we are able to understand the subtle consequences of bending or breaking the rules. (My native language is English, but I assume that grammatical rules and structure of English are similarly applied to other languages).

In other words, when you get older, and have been writing for some time, you may bend or break the rules of grammar – as long as you fully understand the effect these changes will have on the goal of the essay.

After all, the real goal of the Essay is to communicate – not to write perfect grammar.

Similarly, the real goal of an Expert Advisor is automate a trading system – not to write perfect computer code.

The reason I make this comparison is because I am going to propose a framework for building an Expert Advisor. My own set of rules.

This framework is not the only way to build an Expert Advisor, as there are an infinite number of ways to build the same Expert Advisor. However, this framework and its rules provide a sound structure for a beginner. And like the student learning to write an essay, the trader learning to write an Expert Advisor should initially accept the rules as they are proposed. Later, as the trader’s knowledge of MQL programming increases, she can challenge the rules and the structure and apply her own creativity to the task of building an automated trading system.


MQL For Traders Will Help You Learn MQL

Learn to turn your own creative ideas into winning trading systems.

The base system, iStarter.mq4, which is used to exemplify The iExpertAdvisor Method, is a simple but complete Expert Advisor.

To learn what mechanical trading is really like, you need to actually run a system. Since the MetaTrader platform is free and widely available, you can start running a system within days of purchasing MQL For Traders.

Don’t waste your valuable time trying to learn MQL alone: Read MQL For Traders and learn in a few days what takes most traders months to learn.


Click Here to see all Expert Advisor Builders and  Products