iCustom() is an MQL and NQuotes function that allows calling indicators and returning their values from an expert advisor program. It is possible to call iCustom() from .NET using NQuotes library. Indicators with a single parameter or with an empty parameter set can be called without any special code preparations.
Calling indicators with 2 or more parameters requires a trick to serialize parameters to a string and then parse this string on MQL side. On C# side you need to convert all parameters to strings and concatenate them using String.Join() to form a single string, which is passed to iCustom(). On the indicator side you need to add a parsing code to init() function, which splits the passed string, and converts each part to an appropriate type.
If you are converting an existing indicator to be callable from C#, it means that you need to remove “input” and “extern” modifiers from all your parameters, add a single input parameter “input string paramsPack”, then parse it in init() and assign values to your original parameters.
There’s a sample “CustomIndicatorCaller” that shows this technique. You can find the sample source code in the “%TERMINAL_DATA_PATH%\MQL4\Projects\nquotes\CustomIndicatorCaller” folder. Try it like this:
The expected EA output looks like this :
2014.01.01 19:30:48 2013.10.22 00:00 nquotes/nquoteslib EURUSD,M15: loaded successfully
2014.01.01 19:30:49 2013.10.22 00:00 CustomHighLowIndicator EURUSD,M15: loaded successfully
2014.01.01 19:30:49 2013.10.22 00:00 nquotes/nquoteslib EURUSD,M15: CustomHighLowIndicator value = 255.33
The printed value is a sum of parameters passed from C#: param2 + param3.