Comprobar la existencia de un símbolo

En lugar de buscar en toda la lista de símbolos, un programa MQL puede comprobar la presencia de un símbolo concreto por su nombre. Para ello existe la función SymbolExist.

bool SymbolExist(const string name, bool &isCustom)

En el parámetro name debe pasar el nombre del símbolo deseado. El parámetro isCustom pasado por referencia será establecido por la función dependiendo de si el símbolo especificado es estándar (false) o personalizado (true).

La función devuelve false si el símbolo no se encuentra ni en los símbolos estándar ni en los personalizados.

Un análogo parcial de esta función es la consulta de la propiedad SYMBOL_EXIST.

Vamos a analizar el sencillo script SymbolExists.mq5 para probar esta función. En su parámetro, el usuario puede especificar el nombre, que luego se pasa a SymbolExist, y se registra el resultado. Si se introduce una cadena vacía, se comprobará el símbolo de trabajo del gráfico actual. Por defecto, el parámetro se establece en «XYZ», que presumiblemente no coincide con ninguno de los símbolos disponibles.

#property script_show_inputs
   
input string SymbolToCheck = "XYZ";
   
void OnStart()
{
   const string _SymbolToCheck = SymbolToCheck == "" ? _Symbol : SymbolToCheck;
   bool custom = false;
   PrintFormat("Symbol '%s' is %s", _SymbolToCheck,
      (SymbolExist(_SymbolToCheck, custom) ? (custom ? "custom" : "standard") : "missing"));
}

Cuando el script se ejecuta dos veces, primero con el valor por defecto y luego con una línea vacía en el gráfico EURUSD, obtendremos las siguientes entradas en el registro.

Symbol 'XYZ' is missing
Symbol 'EURUSD' is standard

Si ya tiene símbolos personalizados o crea uno nuevo con una fórmula de cálculo sencilla, puede asegurarse de que la variable personalizada está poblada. Por ejemplo, si abre la ventana Symbols en el terminal y pulsa el botón Create symbol, puede introducir «SP500/FTSE100» (los nombres de los índices pueden diferir según su bróker) en el campo Synthetic tool formula y «GBPUSD.INDEX» en el campo con el nombre Symbol. Un clic en OK creará un instrumento personalizado para el que puede abrir un gráfico, y nuestro script debería mostrar en él lo siguiente:

Symbol 'GBPUSD.INDEX' is custom

Cuando configure su propio símbolo, no olvide establecer no sólo la fórmula, sino también valores suficientemente «pequeños» para el tamaño del punto y el paso de cambio de precio (tick). De lo contrario, la serie de cotizaciones sintéticas puede resultar «escalonada», o incluso degenerar en una línea recta.