Natural Language Processing NLP
- Bibliotecas
- Abhijay Tiwari
- Versión: 1.3
📘 Visión General
AlgoNLP.mqh es una librería MQL5 independiente que convierteinstrucciones de trading escritas por humanos en intenciones de trading estructuradas que su Asesor Experto (EA) o indicador puede entender.
Ejemplo de entrada:
Buy gold at 2370 with TP 0.3% and SL 1%
Intento de salida:
Lado: COMPRA | Tipo: LIMIT | Símbolo: XAUUSD | Entrada: 2370 | TP: 0.3% | SL: 1% | Lote: 0.00
Esto le permite construirEAscontrolados por chat o integrados en Telegram que pueden interpretar comandos en inglés simple y ejecutar operaciones estructuradas.
desinfecte siempre el texto entrante y verifique los campos de intención de operación.
Los comandos de usuario no filtrados pueden llevar a lacolocación de órdenes no intencionadas,desajustes de símbolos, oviolaciones de límites de riesgo.
⚠️ Utilice diálogos de confirmación o capas de verificación en entornos de negociación en vivo.
➡️ Revisa mis artículos para una explicación detallada de cómo funciona la PNL e impleméntala usando mq5.
⚙️ Requisitos del sistema
| Requisitos | Detalles |
|---|---|
| Plataforma | MetaTrader 5 (Build ≥ 2750) |
| Idioma | MQL5 (modo estricto activado) |
| Codificación | Unicode-Safe |
| Dependencias | Ninguna (autónomo) |
| Tiempo de ejecución | ≈ 0,2 ms para una frase media (<30 tokens) |
| Huella de memoria | ≈ 20-30 KB por instancia |
| Seguridad de hilos | Un solo hilo (EA/indicador seguro) |
➡️ los benchmarks pueden variar en entornos reales.
Estructura de la biblioteca
| Componente | Tipo | Descripción |
|---|---|---|
| CNLP | Clase gestora principal | Se encarga del análisis sintáctico, la vinculación de contextos y el envío de escuchas. |
| CIntentDetector | Motor principal | Realiza la extracción de números en varias pasadas y la asignación de intenciones. |
| CKeywordExtractor | Utilidad | Extrae palabras clave y filtra palabras de parada. |
| CLexicon | Utilidad | Almacena conjuntos semánticos de palabras (compra/venta, tipos de órdenes). |
| CContexto | Ayudante | Gestiona los símbolos conocidos y el último instrumento utilizado. |
| INLPListener | Interfaz | Interfaz de devolución de llamada para la gestión de intentos basada en eventos. |
| NLPUtil | Espacio de nombres | Funciones de utilidad de texto y temporización. |
➡️ Ver diagrama de arquitectura en profundidad:
Tipos de datos principales
SNLPIntent - Objeto comercial analizado
| Campo | Tipo | Descripción |
|---|---|---|
| válido | bool | True si se ha analizado correctamente |
| lado | ENLPOrderSide | COMPRA, VENTA o DESCONOCIDO |
| tipo | ENLPOrderType | MERCADO, LÍMITE, STOP |
| símbolo | cadena | Símbolo comercial resuelto |
| precio | doble | Precio de entrada (si se proporciona) |
| tp, sl | doble | Valores de take-profit y stop-loss |
| tp_es_percent, sl_es_percent | bool | Verdadero si se basa en %. |
| tp_es_pips, sl_es_pips | bool | Verdadero si en pips/puntos |
| qty_lots | doble | Tamaño de lote detectado |
| cuando | SNLPWhen | Tiempo o condiciones de ruptura |
| en bruto | cadena | Texto original del mensaje |
| razón | cadena | Campo de depuración o explicación |
Cómo funciona
- Normalización: el texto se escribe en minúsculas, se limpia y se sustituyen los sinónimos(take profit → tp).
- Tokenización: se dividen las palabras y se filtran las palabras vacías.
- Concordancia léxica: detecta la dirección de la intención utilizando la distancia Levenshtein difusa ≤1.
- Extracción del contexto numérico: interpreta los números como precio, TP/SL o tamaño del lote mediante el análisis de unidades.
- Lógica temporal: Reconoce "a las 09:15", "en 15 minutos" y activadores de ruptura.
- Resolución de símbolos: infiere instrumentos comooro → XAUUSD.
- Intent Build: Construye SNLPIntent y activa callbacks de escucha.
⚠️ AlgoNLP.mqh utiliza análisis sintáctico de texto determinista y heurística basada en el contexto -no emplea IA o aprendizaje automático.
Como resultado, las frases extremadamente ambiguas o gramaticalmente incompletas pueden producir un comportamiento indefinido o intenciones incompletas.
Valide siempre los resultados analizados antes de ejecutar operaciones reales.
🧩 Ejemplo de integración
Seguridad
Todas las callbacks de INLPListener (como OnOrderIntent , OnError , etc.) seejecutan de forma síncrona desde el hilo principal del EA.
La lógica pesada, las llamadas a la API o las operaciones de órdenes dentro de estos métodos puedenbloquear el flujo de operaciones o provocar retrasos.
Se recomiendadelegar la ejecución de operaciones a funciones asíncronas o temporizadas en lugar de llamarlas directamente en las callbacks.
#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);
}
Métricas de rendimiento
| Caso de prueba | Fichas | Tiempo de análisis | Precisión |
|---|---|---|---|
| Comando corto ("Comprar mercado BTC") | 5 | 0,09 ms | 100% |
| Frase completa ("Comprar oro a 2370 con TP 0,3% y SL 1%") | 15 | 0,22 ms | 100% |
| Consulta ruidosa ("Hey bot short nasdaq please 0.5 lot") | 18 | 0,26 ms | >95% |
➡️ Benchmark realizado en Intel i7-9700 / MT5 Build 3820.
🧭 Resumen
AlgoNLP.mqh transforma texto ordinario en la lógica de comercio procesable dentro de MetaTrader. Está diseñado para desarrolladores que quieren que sus EAspiensen como humanos - entendiendo instrucciones en inglés y ejecutando operaciones de forma inteligente. Esto no es un atajo - es un sistema de cálculo lingüístico completo escrito en MQL5 nativo.
