Natural Language Processing NLP
- Bibliotecas
- Versión: 1.3
📘 Descripción general
AlgoNLP.mqh es una biblioteca MQL5 independiente que conviertelas instrucciones de trading escritas por personas en intenciones de trading estructuradas que tu Asesor Experto (EA) o indicador puede entender.
Si te gusta, no dudes en dejar un comentario :D
Echa también un vistazo a mi nuevo indicador: ALGOCHAMP v3 Plus
Ejemplo de entrada:
Buy gold at 2370 with TP 0.3% and SL 1%
Intención de salida:
Posición: COMPRA | Tipo: LÍMITE | Símbolo: XAUUSD | Precio de entrada: 2370 | TP: 0,3 % | SL: 1 % | Lote: 0,00
Esto te permite crearEAcontrolados por chat o integrados con Telegram que puedan interpretar comandos en inglés sencillo y ejecutar operaciones estructuradas.
siempre depura el texto entrante y verifica los campos de intención de operación.
Los comandos de usuario sin filtrar pueden dar lugar ala realización de órdenes no deseadas,discrepancias en los símbolos oincumplimientos de los límites de riesgo.
⚠️ Utiliza cuadros de diálogo de confirmación o capas de verificación en entornos de negociación en vivo.
➡️ Consulta mis artículos para obtener una explicación detallada sobre cómo funciona el PLN y cómo implementarlo utilizando mq5.
⚙️ Requisitos del sistema
| Requisito | Detalles |
|---|---|
| Plataforma | MetaTrader 5 (versión ≥ 2750) |
| Idioma | MQL5 (modo estricto activado) |
| Codificación | Compatible con Unicode |
| Dependencias | Ninguna (autónomo) |
| Tiempo de ejecución | ≈ 0,2 ms para una frase media (<30 tokens) |
| Consumo de memoria | ≈ 20-30 KB por instancia |
| Seguridad de subprocesos | Un solo hilo (seguro para EA/indicadores) |
➡️ Los resultados de las pruebas de rendimiento pueden variar en entornos reales.
🧩 Estructura de la biblioteca
| Componente | Tipo | Descripción |
|---|---|---|
| CNLP | Clase gestora principal | Se encarga del análisis sintáctico, el enlace de contexto y el envío de eventos a los oyentes. |
| CIntentDetector | Motor central | Realiza la extracción de números en varias pasadas y la asignación de intenciones. |
| CKeywordExtractor | Utilidad | Extrae palabras clave y filtra palabras vacías. |
| CLexicon | Utilidad | Almacena conjuntos de palabras semánticas (comprar/vender, tipos de órdenes). |
| CContext | Ayuda | Gestiona los símbolos conocidos y el último instrumento utilizado. |
| INLPListener | Interfaz | Interfaz de devolución de llamada para la gestión de intenciones basada en eventos. |
| NLPUtil | Espacio de nombres | Funciones de utilidad para texto y sincronización. |
➡️ Ver diagrama detallado de la arquitectura:
📦 Tipos de datos básicos
SNLPIntent — Objeto de operación analizado
| Campo | Tipo | Descripción |
|---|---|---|
| valid | bool | Verdadero si se ha analizado correctamente |
| lado | ENLPOrderSide | COMPRA, VENTA o DESCONOCIDO |
| tipo | ENLPOrderType | DE MERCADO, LIMITE, STOP |
| símbolo | cadena | Símbolo de negociación resuelto |
| precio | doble | Precio de entrada (si se ha indicado) |
| tp, sl | doble | Valores de take-profit y stop-loss |
| tp_is_percent, sl_is_percent | bool | Verdadero si se basa en un porcentaje |
| tp_is_pips, sl_is_pips | bool | Verdadero si se expresa en pips/puntos |
| qty_lots | doble | Tamaño del lote detectado |
| cuando | SNLPWhen | Condiciones de tiempo o de ruptura |
| sin procesar | cadena | Texto del mensaje original |
| motivo | cadena | Campo de depuración o explicación |
🔍 Cómo funciona
- Normalización: el texto se pone en minúsculas, se limpia y se sustituyen los sinónimos (take profit → tp).
- Tokenización: Las palabras se dividen y se filtran las palabras vacías.
- Coincidencia léxica: detecta la intención utilizando la distancia de 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 expresiones como «a las 09:15», «en 15 min» y desencadenantes de ruptura.
- Resolución de símbolos: deduce instrumentos comooro → XAUUSD.
- Construcción de la intención: Construye SNLPIntent y activa las llamadas de retorno del oyente.
⚠️ AlgoNLP.mqh utiliza un análisis sintáctico determinista del texto y heurísticas basadas en el contexto;no emplea IA ni aprendizaje automático.
Como resultado, las frases extremadamente ambiguas o gramaticalmente incompletas pueden dar lugar a un comportamiento indefinido o a intenciones incompletas.
Valida siempre los resultados analizados antes de ejecutar operaciones reales.
🧩 Ejemplo de integración
Seguridad
Todas las funciones de devolución de llamada de INLPListener (como OnOrderIntent, OnError, etc.) seejecutan de forma sincrónica desde el hilo principal del EA.
Una lógica compleja, las llamadas a la API o las operaciones con órdenes dentro de estos métodos puedenbloquear el flujo de operaciones o provocar retrasos.
Se recomiendadelegar la ejecución de las operaciones a funciones asíncronas o temporizadas, en lugar de llamarlas directamente en las funciones de devolución de llamada.
#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 | Tokens | Tiempo de análisis | Precisión |
|---|---|---|---|
| Comando corto («Comprar BTC en el mercado») | 5 | 0,09 ms | 100 % |
| Frase completa («Comprar oro a 2370 con TP del 0,3 % y SL del 1 %») | 15 | 0,22 ms | 100 % |
| Consulta con ruido («Oye, bot, vende en corto el Nasdaq, por favor, 0,5 lotes») | 18 | 0,26 ms | >95 % |
➡️ Prueba de rendimiento realizada en Intel i7-9700 / MT5 Build 3820.
🧭 Resumen
AlgoNLP.mqh transforma texto corriente en lógica de negociación aplicable dentro de MetaTrader. Está diseñado para desarrolladores que desean que sus EApiensen como humanos: que comprendan instrucciones en inglés sencillo y ejecuten operaciones de forma inteligente. No se trata de un atajo, sino de un sistema completo de cálculo lingüístico escrito en MQL5 nativo.

El usuario no ha dejado ningún comentario para su valoración