Natural Language Processing NLP
- Bibliotheken
- Abhijay Tiwari
- Version: 1.3
📘 Überblick
AlgoNLP.mqh ist eine eigenständige MQL5-Bibliothek, dievon Menschen geschriebene Handelsanweisungen in strukturierte Handelsabsichten umwandelt, die Ihr Expert Advisor (EA) oder Indikator verstehen kann.
Beispiel Eingabe:
Buy gold at 2370 with TP 0.3% and SL 1%
Ausgabe-Intention:
Seite: BUY | Type: LIMIT | Symbol: XAUUSD | Einstieg: 2370 | TP: 0,3% | SL: 1% | Lot: 0,00
Damit können SieChat-gesteuerte oder Telegram-integrierte EAs erstellen, die einfache englische Befehle interpretieren und strukturierte Trades ausführen können.
sollten Sie eingehenden Text immer bereinigen und die Felder für die Handelsabsicht überprüfen.
Ungefilterte Benutzerbefehle können zuunbeabsichtigten Orderplatzierungen,Symbolinkongruenzen oderRisikolimitverletzungen führen.
⚠️ Verwenden Sie Bestätigungsdialoge oder Verifizierungsebenen in Live-Handelsumgebungen.
➡️ In meinen Artikeln wird ausführlich erklärt, wie NLP funktioniert und wie man es mit mq5 implementiert.
⚙️ Systemvoraussetzungen
| Anforderung | Einzelheiten |
|---|---|
| Plattform | MetaTrader 5 (Build ≥ 2750) |
| Sprache | MQL5 (strenger Modus aktiviert) |
| Kodierung | Unicode-sicher |
| Abhängigkeiten | Keine (in sich geschlossen) |
| Ausführungszeit | ≈ 0,2 ms für einen durchschnittlichen Satz (<30 Token) |
| Speicherplatzbedarf | ≈ 20-30 KB pro Instanz |
| Thread-Sicherheit | Single-Thread (EA/Indikator sicher) |
➡️ Benchmarks können in realen Umgebungen variieren.
🧩 Aufbau der Bibliothek
| Komponente | Typ | Beschreibung |
|---|---|---|
| CNLP | Hauptmanager-Klasse | Erledigt das Parsen, die Kontextbindung und den Versand von Listenern. |
| CIntentDetector | Kern-Engine | Führt die Zahlenextraktion in mehreren Durchläufen und die Absichtszuordnung durch. |
| CKeywordExtractor | Dienstprogramm | Extrahiert Schlüsselwörter und filtert Stoppwörter. |
| CLexicon | Dienstprogramm | Speichert semantische Wortsätze (Kauf/Verkauf, Auftragsarten). |
| CContext | Hilfsmittel | Verwaltet bekannte Symbole und das zuletzt verwendete Instrument. |
| INLPListener | Schnittstelle | Callback-Schnittstelle für ereignisgesteuerte Intent-Behandlung. |
| NLPUtil | Namespace | Text- und Timing-Utility-Funktionen. |
➡️ Detailliertes Architekturdiagramm anzeigen:
📦 Kerndatentypen
SNLPIntent - Geparstes Handelsobjekt
| Feld | Typ | Beschreibung |
|---|---|---|
| gültig | bool | Wahr, wenn erfolgreich geparst |
| Seite | ENLPOrderSide | KAUFEN, VERKAUFEN oder UNBEKANNT |
| Typ | ENLPOrderType | MARKT, LIMIT, STOP |
| Symbol | Zeichenfolge | Aufgelöstes Handelssymbol |
| Preis | doppelt | Einstiegspreis (falls angegeben) |
| tp, sl | doppelt | Take-Profit- und Stop-Loss-Werte |
| tp_ist_prozentig, sl_ist_prozentig | bool | Wahr, wenn %-basiert |
| tp_ist_pips, sl_ist_pips | bool | Wahr, wenn in Pips/Punkten |
| qty_lots | doppelt | Ermittelte Losgröße |
| wenn | SNLPWhen | Zeit oder Ausbruchsbedingungen |
| roh | Zeichenfolge | Ursprünglicher Nachrichtentext |
| Grund | Zeichenfolge | Feld zur Fehlersuche oder Erklärung |
🔍 So funktioniert es
- Normalisierung: Der Text wird kleingeschrieben, bereinigt und Synonyme werden ersetzt(take profit → tp).
- Tokenisierung: Wörter werden getrennt und Stoppwörter herausgefiltert.
- Lexikalischer Abgleich: Erkennung der Absichtsrichtung anhand der unscharfen Levenshtein-Distanz ≤1.
- Zahlenkontextextraktion: Interpretiert Zahlen als Preis, TP/SL oder Losgröße mittels Einheitenanalyse.
- Timing-Logik: Erkennt "um 09:15", "in 15 Minuten" und Ausbruchs-Trigger.
- Symbolauflösung: Ermittelt Instrumente wieGold → XAUUSD.
- Intent Build: Konstruiert SNLPIntent und löst Listener Callbacks aus.
⚠️ AlgoNLP.mqh verwendet deterministisches Text-Parsing und kontextbasierte Heuristiken - es setzt keine künstliche Intelligenz oder maschinelles Lernen ein.
Daher können extrem mehrdeutige oder grammatikalisch unvollständige Sätze zu undefiniertem Verhalten oder unvollständigen Intents führen.
Validieren Sie die geparsten Ergebnisse immer, bevor Sie echte Trades ausführen.
🧩 Beispiel Integration
Sicherheit
Alle INLPListener-Callbacks (wie OnOrderIntent , OnError , etc.) werdensynchron vom EA-Hauptthreadausgeführt.
Schwere Logik, API-Aufrufe oder Orderoperationen innerhalb dieser Methoden könnenden Handelsfluss blockieren oder eine Verzögerung verursachen.
Es wird empfohlen,die Handelsausführung an asynchrone oder zeitgesteuerte Funktionen zu delegieren, anstatt sie direkt in Callbacks aufzurufen.
#include <AlgoNLP.mqh>
class CMyListener : public INLPListener
{
public:
void OnOrderIntent(const SNLPIntent &i) override
{
Print("✅ NLP Worked!");
Print("Side: ", EnumToString(i.side));
Print("Type: ", EnumToString(i.type));
Print("Symbol: ", i.symbol);
Print("TP: ", DoubleToString(i.tp, 2), " | SL: ", DoubleToString(i.sl, 2));
}
};
CMyListener listener;
CNLP nlp;
int OnInit()
{
nlp.AddSymbol("XAUUSDm");
nlp.AddListener(listener);
return(INIT_SUCCEEDED);
}
void OnStart()
{
string text="Buy gold at 2370 with TP 0.3% and SL 1%";
nlp.Dispatch(text);
}
🧮 Leistungsmetriken
| Testfall | Token | Parse-Zeit | Genauigkeit |
|---|---|---|---|
| Kurzer Befehl ("BTC-Markt kaufen") | 5 | 0,09 ms | 100% |
| Vollständiger Satz ("Gold kaufen bei 2370 mit TP 0,3% und SL 1%") | 15 | 0.22 ms | 100% |
| Verrauschte Abfrage ("Hey bot short nasdaq please 0.5 lot") | 18 | 0.26 ms | >95% |
➡️ Benchmark durchgeführt auf Intel i7-9700 / MT5 Build 3820.
🧭 Zusammenfassung
AlgoNLP.mqh wandelt gewöhnlichen Text in handlungsfähige Handelslogik innerhalb von MetaTrader um . Es wurde für Entwickler entwickelt, die wollen, dass ihre EAswie Menschen denken - einfache englische Anweisungen verstehen und Trades auf intelligente Weise ausführen. Dies ist keine Abkürzung - es ist ein vollständiges linguistisches Berechnungssystem, das in nativem MQL5 geschrieben ist.
