MQL5 Tutorial

MQL5 TUTORIAL BASICS – 73 SIMPLE SPREAD FILTER


Listen Later

In this video, we are going to create an expert advisor that is able to allow or forbid trading based on the current spread, so let’s find out how to do that with mql5. To get started please click on a little icon here or press F4 on your keyboard. Now you should see the Metaeditor window and here you want to click on file, new file, expert advisor from template, continue, I will call this file, simple spread filter, click on continue, continue and finish. Now you can delete everything above the ontick function and the two comment lines here. We start with an include statement to include the file trade dot mqh. This one comes with mql5 and it provides simplified trading functions. Afterwards, we use the class ctrade to create an instance called trade and we are going to use that one later to open new positions. And we would like to create a user-defined input variable for the max allowed spread, that value can be changed later on without recompiling the code. Inside of the on tick function we want to calculate the ask price and the bid price that is done by using symbol info double for the current symbol on the chart, we use either symbol ask or symbol bid based on what we want to calculate and with normalize double and underscore digits we make sure that we calculate the right number of digits behind the dot. For the trading entry, we want to create a string variable, this one is called signal but we don’t assign a value here because we are going to calculate that later on. We need some price data therefore we use mql rates to create a price array. With array set as series, we are going to sort our price array from the current candle downwards and afterwards, we use copy rates to fill our price array with data for the current symbol on the chart and the currently selected period, we start with candle zero and we want to copy the values for three candles. Now let’s calculate the current spread, this is done by using symbol info integer for the current symbol on the chart and we use symbol underscore spread to calculate the current spread. Let’s create another string variable called spread filter, this is going to be used for our filter and if the current spread is bigger or equal the max spread that we have allowed the spread filter will get the value, trading is not allowed because the spread is too high. Otherwise, if the current spread is below or equal to the max value that we have allowed that’s when we assign the value, trading is allowed to our spread filter. Now let’s create some simple entry conditions, in this case, I’ll check if the close price for candle one is bigger than the close price for candle two, in that case, I want to buy so we assign the value buy to our signal. Otherwise, if the close price for candle one is below the close price for candle two that’s when we want to sell so now we assign the word sell to our signal but before we allow any positions we make it a precondition that the spread filter has the value, trading is allowed and only if that is the case we check the entry conditions. If the signal equals sell and positions total returns the value below one that would mean we have no open positions but a sell signal and that’s when we use trade dot sell to sell ten micro lot. In the other case if the signal equals buy and we have no open positions that’s when we use trade dot buy to buy ten micro lot but we only do that if the spread filter equals trading is allowed. Finally, we want to use the comment statement to create an output for the current spread, the max spread that we have allowed and the spread filter. That’s about it. If this was too fast for you or if you have no idea what all the code here does maybe you want to watch one of the other videos in this basic video series or maybe even the premium course on our website might be interesting for you. Actually, this was a suggestion from another premium course member and if you are already a premium course member and have an idea for a vi...
...more
View all episodesView all episodes
Download on the App Store

MQL5 TutorialBy Raimund Bauer