TsnPerfectHashGenerator
- Utilitys
-
Niquel Mendoza
Creator of the TSN ecosystem (Trade Systems Nique) for MQL5. - Version: 1.2
SimPHash ist ein kostenloses Skript, das automatisch ultraschnelle Konvertierungsfunktionen von einer Zeichenkette zu einem Wert generiert: Dabei kann es sich um einen einfachen Typ (Integer, Double, Ulong usw.) oder um einen Index in Ihrem eigenen Array oder Ihrer eigenen Struktur handeln, wenn der benötigte Wert komplexer ist.
Anstatt eine HashMap, ein lineares Array mit Suchfunktion oder eine endlose Kette von if-/switch-Anweisungen zu verwenden, erstellt SimPHash zur Entwurfszeit eine Perfect-Hash-Tabelle: eine Funktion, die jeden bekannten Schlüssel mit nur wenigen arithmetischen Operationen und einem einzigen Array-Zugriff auflöst, ohne Kollisionen und ohne dass eine Schleife durchlaufen werden muss.
Dies ist besonders nützlich, wenn Sie Folgendes benötigen:
- Zeichenketten in einen eigenen Bezeichner umwandeln, beispielsweise um Ereignisse aus dem Wirtschaftskalender einem `ulong` zuzuordnen, ohne bei jedem Tick auf Textvergleiche zurückgreifen zu müssen.
- Die Umwandlung von Zeichenketten in Enums simulieren – etwas, das die Sprache von Haus aus nicht bietet.
- Symbole, Codes oder beliebige feste Mengen bekannter Schlüssel in einen Wert oder in einen Index Ihres eigenen Arrays auflösen – und das bei möglichst geringen Laufzeitaufwänden.
So funktioniert es
- Sie schreiben Ihre Schlüssel (und optional deren Werte) in eine YAML-Datei.
- Sie führen das Skript einmal aus und verweisen dabei auf diese YAML-Datei.
- Das Skript generiert eine .mqh-Datei, die Sie direkt in Ihr Projekt einbinden können und in der die Tabellen sowie die Lookup-Funktion bereits enthalten sind.
- Sie binden diese .mqh-Datei in Ihren EA oder Indikator ein und rufen die generierte Funktion auf. Es ist nicht erforderlich, Hash-Tabellen manuell zu erstellen oder die internen Details des Algorithmus zu verstehen.
Hauptvorteile
- Erfordert keinen zusätzlichen Code Ihrerseits: lediglich die YAML-Konfigurationsdatei.
- Zwei kombinierbare Hash-Stufen, geeignet für unterschiedliche Schlüsselmengengrößen.
- Zwei Ausgabemodi: eine Funktion, die den Endwert direkt zurückgibt, oder eine Funktion, die einen Index in Ihr eigenes Array zurückgibt.
- Generiert automatisch beide Varianten der Lookup-Funktion: eine, die die Zeichenfolge direkt entgegennimmt, und eine, die einen bereits berechneten Hash entgegennimmt – nützlich, wenn Ihr Code diesen zuvor berechnet hat.
- Optionaler Binärexport, falls Sie die Tabelle lieber zur Laufzeit laden möchten, anstatt sie einzukompilieren.
Installation und Verwendung
Im folgenden Beitrag finden Sie eine Schritt-für-Schritt-Anleitung und Anwendungshinweise für dieses Dienstprogramm.
https://www.mql5.com/en/blogs/post/775444
