TsnPerfectHashGenerator
- Utilidades
-
Niquel Mendoza
Creador del ecosistema TSN (Trade Systems Nique) para MQL5. - Versión: 1.2
SimPHash es un script gratuito que genera automáticamente funciones de conversión ultrarrápidas de una cadena a un valor: puede tratarse de un tipo simple (entero, doble, ulong, etc.) o de un índice en tu propio array o estructura cuando el valor que necesitas sea más complejo.
En lugar de utilizar un HashMap, un array lineal con búsqueda o una cadena interminable de if / switch, SimPHash crea una tabla hash perfecta en tiempo de diseño: una función que resuelve cada clave conocida mediante unas pocas operaciones aritméticas y un único acceso al array, sin colisiones y sin necesidad de recorrer nada en bucle.
Esto resulta especialmente útil cuando necesitas:
- Convertir cadenas en tu propio identificador, por ejemplo, asignando eventos del calendario económico a un `ulong` sin depender de comparaciones de texto en cada tick.
- Simular la conversión de una cadena a una enumeración, algo que el lenguaje no ofrece de forma nativa.
- Resolver símbolos, códigos o cualquier conjunto fijo de claves conocidas en un valor o en un índice de tu propio array, con el menor coste de ejecución posible.
Cómo funciona
- Escribes tus claves (y, opcionalmente, sus valores) en un archivo YAML.
- Ejecuta el script una vez, indicándole ese archivo YAML.
- El script genera un archivo .mqh listo para incluir en tu proyecto, con las tablas y la función de búsqueda ya escritas.
- Incluye ese archivo .mqh en tu EA o indicador y llama a la función generada. No es necesario escribir tablas hash a mano ni comprender los detalles internos del algoritmo.
Principales ventajas
- No requiere código adicional por tu parte: solo el archivo de configuración YAML.
- Dos etapas de hash combinables, adecuadas para diferentes tamaños de conjuntos de claves.
- Dos modos de salida: una función que devuelve el valor final directamente, o una función que devuelve un índice en tu propio array.
- Genera automáticamente ambas variantes de la función de búsqueda: una que toma la cadena directamente y otra que toma un hash ya calculado, lo cual resulta útil si tu código lo ha calculado previamente.
- Exportación binaria opcional, en caso de que prefieras cargar la tabla en tiempo de ejecución en lugar de compilarla.
Instalación y uso
Consulta la siguiente entrada para obtener una guía paso a paso e instrucciones de uso de esta utilidad.
https://www.mql5.com/en/blogs/post/775444
