Popular results

$ £ ¥
¥ £ $

Error 4302 en MetaTrader 5: no se puede cargar el indicador personalizado

Uno de los errores que puede encontrar al utilizar MetaTrader 5 es el Error 4302 - "no se puede cargar el indicador personalizado". Esta guía describe la razón que puede causar tal error, así como las posibles formas de solucionarlo.

¿Qué significa el Error 4302?

Como se desprende del mensaje de error, el Error 4302 se produce cuando la plataforma MetaTrader 5 no puede cargar un indicador personalizado, aunque no nos dice por qué ha sucedido esto. La descripción del error en el sitio web de MQL5 indica que "El símbolo no está seleccionado en Observación del mercado". Normalmente, este error se produce cuando un script, un asesor experto o un indicador intenta llamar a la función iCustom() para un símbolo que no se ha añadido a la ventana Observación del mercado.

Veamos un ejemplo para comprender mejor cómo puede producirse este error. En este ejemplo, hemos creado un simple indicador personalizado, llamado TestIndicator utilizando el código de programa por defecto que MetaEditor pone cuando se crea un nuevo indicador. A continuación, creamos un sencillo script que utiliza la función iCustom() para llamar al indicador personalizado y devolver su manejador como resultado.

void OnStart()
{
    string symbol = "EURUSD"; // Sustituir por el símbolo eliminado
    ENUM_TIMEFRAMES timeframe = PERIOD_M1; // Marco temporal de 1 minuto

    // Intento de llamar al indicador personalizado
    int handle = iCustom(symbol, timeframe, "TestIndicator");

    if (handle == INVALID_HANDLE)
    {
        int error_code = GetLastError();
        Print("Código de error: ", error_code);
    }
    else
    {
        Print("El manejador del indicador personalizado para ", symbol, " es ", handle);
    }
}

Como puede ver, el script llama al indicador específicamente para el símbolo EUR/USD. Si el símbolo está presente en la ventana Observación del mercado, el script se ejecuta sin problemas, devolviendo el manejador del indicador.

El script se ejecuta sin errores

Sin embargo, si eliminamos EUR/USD de la ventana de Observación del Mercado, se mostrará el Error 4302 en la pestaña Expertos del terminal MetaTrader 5. Además, el script está configurado para mostrar el código de error si no es capaz de devolver un manejador adecuado y confirma que el código de error, en este caso, es 4302.

El script falla con el Error 4302

¿Cómo solucionar el error 4302?

Añadir el símbolo a la ventana de Observación del Mercado

Una de las soluciones más sencillas para el Error 4302 es añadir el símbolo requerido a la ventana de Observación del Mercado. El problema es que quizá no sepa qué símbolo tiene que añadir. Y examinar el código para descubrirlo puede ser difícil, sobre todo si no está familiarizado con la programación.

Cambiar el símbolo en el código

Otra solución es cambiar el símbolo al que llama el script, el EA o el indicador mediante la función iCustom(). Obviamente, esta solución es aún más difícil que la anterior, sobre todo para los traders que carecen de conocimientos de programación.

No especifique el símbolo en la función iCustom()

Para aquellos que están programando sus propios EA e indicadores o para aquellos que están dispuestos a sumergirse en el código del EA o indicador que no está funcionando, la mejor solución es no especificar el símbolo en la función iCustom(). En su lugar, utilice el parámetro NULL o Symbol() en el lugar donde la función pide el símbolo. Esto llamará a la función para el símbolo actualmente seleccionado.

Conclusión

El error 4302 se produce cuando un script, un asesor experto o un indicador llama a la función iCustom() para un símbolo que no está añadido actualmente en la ventana de Observación del mercado.

La mejor manera de evitar el error es evitar llamar a la función de un símbolo específico al escribir el código de un programa. Si ha encontrado el error utilizando un indicador o EA existente, puede solucionarlo añadiendo el símbolo necesario a la ventana de Observación del mercado o modificando el código del EA. O simplemente puede elegir un EA mejor programado.