Any questions from newcomers on MQL4 and MQL5, help and discussion on algorithms and codes - page 406
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
How do I write a function with a variable number of parameters?
You can set some parameters of a function to an initial value (these parameters should be the last ones). When the function is called, these parameters can be set or not, depending on the need. If parameters will not be set explicitly, they will receive initial values.
The second option is overloading. Simply write a function with the same name, only with different types/number of parameters.
Like what?
I need to pass several parameters to a function, but in different situations I need to pass a different number, known in advance
In C, for example, this is implemented like thisand then process these parameters in the function
int func(int a, int b, ...)
Is there any way to put a "Undo" button on the toolbar in MetaEditor?
(the one that implements Ctrl+Z)
I need to pass several parameters to a function, but in different situations I need to pass a different number, known in advance
In C, for example, this is implemented like thisand then process these parameters in the function
int func(int a, int b, ...)
Pass the array and the number of parameters to take from the array
Pass in an array and the number of parameters to take from the array
So the numbers I need to pass are not in order, i.e. a universal one cannot be generated.
At least give me one non-abstract example.
For example:
Depending on the condition(NOT if, but just basically, I write these numbers myself)
a = func(digit, 10, 18, 42); or a = func(digit, 11, 18, 42, 15, 13); or a = func(digit, 5);
double func(int num, ????)
{
return("sum of these parameters"/num);
}
like this:
Depending on the condition(NOT if, but just basically, I write these numbers myself)
a = func(digit, 10, 18, 42); or a = func(digit, 11, 18, 42, 15, 13); or a = func(digit, 5);
double func(int num, ????)
{
return("sum of these parameters"/num);
}
Well then, what first came to mind, and as already suggested here above - pass in function array double, and in function calculate necessary values from values of passed array - it is possible to know both quantity of numbers(array size), and accordingly to calculate their relations. Only the formula will remain the same for any size of the array. If you are going to change the formula too, then just the array won't work for this, you will have to make one more parameter - which will point to the right formula for the calculation. For example, you can pass an enumeration indicating the type of formula (ENUM_TYPE_CALCULATED) and, based on the value of this enumeration, for example CALCULATE_SUMM, just calculate (in this example) the sum of all values of the passed array.
So the numbers I need to pass there are out of order, i.e. a universal one cannot be formed
Here's a full-fledged answer, but no response...
Forum on trading, automated trading systems & strategy testing
Any questions from newbies on MQL4, help and discussion on algorithms and codes
Alexey Kozitsyn, 2018.01.05 11:46
You can set some function parameters to an initial value (these parameters should be the last ones). When you call the function, you will be able to set these parameters or not, depending on the need. If parameters are not set explicitly - they will get initial values.
The second option is overloading. Simply write a function with the same name, only with different types/number of parameters.
Here's a full-fledged answer, but no response to it...
If the set and number of numbers are not known in advance, there is no function for every new set.