Determining Expert Advisor parameters
After we have trained the model, before running it in the trading strategy, we need to learn how to use it. First and foremost, we need to understand its signals. As you know, after the feed-forward pass, our model returns two values:
- The probable direction of movement (the absolute value shows the probability of movement, and the sign shows the direction).
- The expected strength of movement (the absolute value shows the force of motion, and the sign shows the direction).
For each parameter, you need to find the decision threshold. A too-high value can filter out a large number of profitable trades or not provide any signals for trading operations at all. A too-small value can lead to a large number of false signals and even make trading unprofitable. Therefore, it is now very important to find the optimal parameters of the Expert Advisor to work with our trained model.
The best tool to do this is the MetaTrader 5 strategy tester. In the terminal, press Ctrl + R and navigate to the tester. In the Settings tab, in the Expert field, select our Expert Advisor and set the testing parameters.
We trained the model on EURUSD historical data from 2015 to 2020 on the M5 timeframe. We will use the same historical data to determine the optimal parameters of the Expert Advisor. According to the general neural network training rule, the performance of the model should be verified on a validation dataset. However, in this case, we simply determine the optimal parameters for the Expert Advisor when the model is running on the training dataset.
We know that our Expert Advisor analyzes entry points only at the opening of the candlestick, so to check the presence of signals from the model, it would be possible to test only at the opening prices. However, we also need to understand the quality of these signals. At the same time, we want to conduct the initial rough selection of parameters with minimal time and resources. Therefore, let's choose the testing mode based on the control points of the M1 timeframe.
We need to optimize the parameters, so we choose the optimization mode. To select the optimization mode, it's desirable to know the number of upcoming iterations. Counting them requires no effort, as they are automatically calculated when selecting Expert Advisor parameters for optimization. Let's go to the parameters tab and set the initial values of the parameters in the Value column. I would like to point out that parameters such as the model file name and the number of candles in the current pattern are not optimized because they should match the model being used.
Optimization of Expert Advisor parameters
In the first stage, we will roughly optimize only one parameter: the TradeLevel decision-making threshold. Select the checkbox of this parameter. At the output of our model, we used the hyperbolic tangent (tanh) as the activation function. Therefore, the output values of neurons are normalized in the range from −1 to 1. The sign shows the direction of movement. This means that the decision-making level can be in the range from 0 to 1. Obviously, making trades with a probability of making a profit of less than 50% looks risky, to say the least. Therefore, let's try to choose the level of decision-making in the range from 0.5 to 1.0. Recall that this is the first and rough selection of the parameter, so we will use step 0.05. The strategy tester immediately counted 11 iterations for us. As you can see, there are quite a few of them. Let's go back to the Settings tab and select the Slow complete algorithm optimization type. We also select optimization for the maximum balance and start the optimization process by clicking on the Start button.
Optimization of Expert Advisor parameters
The screenshot below shows the optimization results. As you can see, with a decision threshold of 0.65 or higher, the Expert Advisor does not execute any trades. From this, we can conclude that during the training process, our neural network did not identify patterns with a probability of one-directional movement equal to or greater than 65%. You should not be alarmed by the loss incurred by the Expert Advisor at this stage, as we have only conducted preliminary rough optimization with a crude determination of the decision-making level. Next, we have to optimize a few more parameters of our Expert Advisor.
Results of the first optimization
Results of the first optimization
First, let's try to optimize the parameter of the minimum strength of the upcoming movement MinTarget in order to filter out minor fluctuations. The goal of this iteration is to select the strongest movements. This is because the probability of such patterns triggering in practice is higher, and minor fluctuations may not have enough momentum to reach the target or may not trigger at all. Moreover, using orders with a low level of profitability reduces the risk-reward ratio.
We will optimize the parameter in the range from 50 to 600 points in increments of 50 points. In this iteration, we need to check 12 runs of the Expert Advisor.
Selection of the threshold value of decision-making
Based on the results of this parameter optimization, we can observe the emergence of the first profitable runs with a decision level of 500 and 600 points. However, with such parameter choices, the number of completed trading operations significantly decreases. Indeed, we want to extract the maximum potential from our model. It seems that values of the decision-making threshold around 350-400 pips are the most promising, with a trade count exceeding 1000 and being closest to the breakeven point. Let's take a small gamble and continue optimizing the parameters with the specified parameter range.
Results of Decision Threshold Optimization
Next, let's move on to optimizing the stop-loss parameter, which limits the risks for each trade. We will optimize this parameter in the range from 50 to 500 pips with a step size of 50 pips.
As mentioned above, we have not defined a clear value for the MinTarget parameter. Therefore, for the current optimization process, we will use two optimized parameters. At the same time, the parameter for the forecast strength threshold of the upcoming impulse will only take two permissible values.
Results of Decision Threshold Optimization
Thus, the strategy tester counted 20 passes of the current optimization process.
It is worth noting one more circumstance. In the upcoming optimization process, we are going to find the optimal stop-loss level. Here, it should be noted that in real trading, stop-loss and take-profit levels are handled by the broker on each tick. To get loss values as close as possible to real levels when the stop-loss is triggered, it will be necessary to optimize with each tick processed. Therefore, we go to the Settings tab and change the simulation mode to Every tick based on real ticks, which will switch the strategy tester to the mode of processing real historical ticks. We will also change the optimization mode to Fast genetic based algorithm. This will allow the tester to filter out passes whose results will be significantly worse than those already conducted.
Optimization of stop-loss parameters
Optimization of stop-loss parameters
As a result of optimizing the parameters, unfortunately, we still do not see any profitable passes. However, there is a clear superiority of a larger decision-making parameter based on the strength of the upcoming MinTarget momentum. At the same time, fairly close results were obtained for three stop-loss levels in the range of 300-400 points.
Thus, for further optimization of parameters, we take MinTarget at the level of 400 points, and we will continue optimizing the stop loss in the range of 300-400 points.
Stop-loss selection results
Stop-loss selection results
The next parameter to be optimized is the coefficient of confidence in the predicted strength of the expected momentum. This is the coefficient by which we will multiply the value of the second parameter returned by our model when calculating the take profit for the opened position. We will not overestimate the expected momentum value. Therefore, the upper limit of parameter optimization will be equal to one. We will set the lower limit of optimization at the level of 0.5, which is equivalent to 50% of the predicted momentum. With a step of 0.05, we get 11 optimization passes. Multiplying this number by 3 stop-loss options, we will get 33 passes of the upcoming parameter optimization.
Optimization of the confidence factor
As a result of optimization, we make a clear choice of a stop loss parameter at the level of 400 points and a confidence coefficient at the level of 0.8.
Results of Confidence Factor Optimization
Results of Confidence Factor Optimization
Unfortunately, we must admit the failure of our endeavor. We never got a profitable combination of parameters. Let's go back to the MinTarget parameter expressing the threshold decision-making value based on the strength of the predicted momentum. During the previous optimization of this parameter, we got the maximum profit at the level of 500 points. Let's conduct a small re-optimization of this parameter in the range from 400 to 500 points with a step of 50 points.
Re-optimization of the decision-making parameter
As a result of optimization, we get a profitable combination of parameters at the level of 500 points. I must say that the level of profit received is almost twice as much as previously received. At the same time, the number of trading operations decreased, while the profit factor remained at the level of 1.22.
Results of optimization of the decision-making parameter
Optimization of the profitability constraint parameter
Next, we optimize the MaxTP parameter indicating the maximum take profit limit. This parameter will act as a safeguard against inflated expectations. If the model predicts an exaggerated movement with new values, the Expert Advisor will limit the take profit level to this value, which we will determine from the statistics of the training dataset. We optimize the value of the MaxTP parameter in the range from 300 to 900 points in increments of 100 points.
Based on the optimization results, it can be noticed that when the parameter is increased beyond 600, the performance of the Expert Advisor does not change. Consequently, the level of expected movement does not exceed 600 points for the entire training sample. Therefore, we can safely limit the maximum profit level to 600 points.
Results of optimization of the profitability constraint parameter
Results of optimization of the profitability constraint parameter
Fine-tuning the decision-making parameter
Finally, we will fine-tune the decision-making parameter based on the movement probability level TradeLevel. Earlier, we conducted a rough optimization of this parameter with a step of 0.05 and settled on a level of 0.6. Now we will try to optimize the parameter with a step of 0.01 in the vicinity of the previously chosen level. Thus, we will optimize the parameter in the range of 0.560.64.
Strangely enough, the optimization we conducted only confirmed the correctness of the previously chosen decision-making parameter value at the level of 0.6. Any deviation of the parameter from this value has a negative impact on the profitability of our Expert Advisor.
Results of fine-tuning the decision-making parameter
Results of fine-tuning the decision-making parameter
So, as a result of the optimization work, we have the following set of parameters that allow for profitability on the training dataset.
It should be noted that to determine the optimal set of parameters, we went through quite a few iterations of their optimization. At the same time, the MetaTrader 5 strategy tester allows you to optimize any number of parameters in one run of the optimization process. However, you will have to pay for it with time and computing resources. If we calculate the total number of passes made for all iterations of optimization, we get about 95 passes. If we were to run simultaneous optimization of all the parameters mentioned above, the total number of possible parameter combinations for conducting passes would exceed 100,000. One can hope for a reduction in the number of passes through the use of genetic algorithms, but still, their number will significantly exceed what we've conducted. Consequently, it will take much more time to optimize the parameters.
A set of optimized parameters
Now, after determining the optimal set of parameters, let's test the model's performance on new data.