Mira cómo descargar robots gratis
¡Búscanos en Facebook!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

A powerful and feature-rich JSON library for MQL5, designed to bring a modern development experience similar to Python/JS - librería para MetaTrader 5

Visualizaciones:
263
Ranking:
(5)
Publicado:
JsonCore.mqh (2.18 KB) ver
JsonNode.mqh (5.67 KB) ver
JsonParser.mqh (3.27 KB) ver
JsonStream.mqh (4.82 KB) ver
JsonTypes.mqh (16.29 KB) ver
JsonUtils.mqh (3.87 KB) ver
JsonDocument.mqh (6.93 KB) ver
JsonApiImpl.mqh (33.47 KB) ver
JsonPath.mqh (23.42 KB) ver
JsonLib.mqh (34.62 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

1. Visión General

La librería MQL5 JSON es una librería potente y rica en características diseñada específicamente para parsear, manipular y serializar datos JSON dentro del entorno MQL5. Proporciona un simple e intuitivo Modelo de Objetos de Documento (DOM) API, con el objetivo de hacer la experiencia de manejo de JSON en MQL5 comparable a los lenguajes de programación modernos como JavaScript y Python.

Esta biblioteca es capaz de manejar una amplia gama de tareas, desde la lectura de configuraciones simples de EA hasta el complejo intercambio de datos en tiempo real entre sistemas. Sus principales funciones y características incluyen:

  • --- Análisis sintáctico y creación ---
  • Carga desde cadena o archivo: Analiza de forma fiable texto JSON en objetos manipulables en memoria ( JsonParse , JsonFromFile ).
  • Construir desde cero: Crea fácilmente nuevos objetos JSON y matrices mediante programación utilizando API concisas como JsonNewObject y JsonNewArray .
  • Analizador sintáctico flexible: Soporta opcionalmente algunas características no estándar de JSON5, como comentarios de código y comas finales, para mejorar la compatibilidad con diversas fuentes de datos.

  • --- Manipulación y acceso

  • Recorrido intuitivo del DOM: Acceda a los datos utilizando una sintaxis intuitiva con claves ( node["key"] ) e índices ( node[0] ), igual que si utilizara un diccionario Python o un objeto JavaScript.

  • Conversión de tipos segura: Proporciona una serie de métodos con valores por defecto, como AsInt(defaultValue) y AsString(defaultValue) , que permiten extraer de forma segura datos del tipo deseado de un nodo sin preocuparse de que el programa se bloquee debido a desajustes de tipo o rutas inexistentes.
  • Modificación dinámica: Añadir, actualizar o eliminar libremente pares clave-valor en objetos JSON y elementos en arrays ( Set , Add , Remove ).

    --- Consulta y procesamiento avanzados

  • Potente motor de consultas: soporte integrado para JSON Pointer (RFC 6901, para acceso directo a rutas) y JSONPath (para consultas complejas y difusas), lo que permite la extracción eficiente de uno o más nodos de datos de estructuras complejas y profundamente anidadas, ya sea en bloque o con precisión.

  • Análisis de flujos de baja memoria: Proporciona JsonStreamParser para procesar archivos JSON enormes a escala de gigabytes. Lee el archivo token por token en forma de flujo de eventos sin cargar todo el archivo en memoria, logrando así la máxima eficiencia de memoria.
  • Funciones de utilidad: Ofrece funciones avanzadas como la clonación de documentos ( .Clone() ) y la fusión profunda ( JsonMerge ), que simplifican enormemente tareas complejas comunes como la fusión de la "configuración por defecto" con la "configuración del usuario".

    --- Robustez y seguridad

  • Gestión automática de memoria: Adopta el patrón de diseño RAII (Resource Acquisition Is Initialization). JsonDocument se encarga de gestionar el ciclo de vida de todos sus nodos. Los desarrolladores no necesitan crear/eliminar manualmente ningún elemento JSON, eliminando fundamentalmente el riesgo de fugas de memoria.

  • Seguridad de operación entre documentos: Al asignar un nodo entre diferentes instancias de JsonDocument, la biblioteca realiza automáticamente una copia profunda segura (Clone), evitando punteros colgantes y corrupción accidental de datos.
  • Informe detallado de errores: Cuando falla el análisis sintáctico, el objeto JsonError proporciona información detallada que incluye el número de línea de error, el número de columna y el contexto, lo que facilita el diagnóstico rápido del problema.

2. 2. Conceptos básicos y gestión de memoria

[!!] 2.1 Namespace - La clave para integrar su proyecto [!!] Consejo más importante: Todas las clases de esta librería (e.g., JsonDocument , JsonNode ) y funciones globales (e.g., JsonParse ) están encapsuladas dentro de un espacio de nombres llamado MQL5_Json .

**Cómo Usarlo Correctamente:** - **En Archivos de Cabecera (.mqh)**: MQL5 no permite `usar namespace` en el ámbito global de los archivos de cabecera. **Por lo tanto, debe utilizar nombres completamente cualificados**. Esta es la única forma fiable en proyectos con múltiples archivos. Incorrecto: `JsonDocument doc;` Correcto: `MQL5_Json::JsonDocument doc;` - **Inside Functions in Main Program Files (.mq5)**: Por conveniencia, puede usar `using namespace MQL5_Json;` dentro de las funciones, pero para asegurar la generalidad de los ejemplos, todo el código en este manual usará el enfoque de nombre completamente cualificado. **Si se encuentra con el error de compilación `'JsonNode' - declaración sin tipo`,** casi siempre se debe a que se ha olvidado añadir el prefijo `MQL5_Json::`** a los tipos y funciones.

[2.2 Modelo de Gestión de Memoria JsonDocument posee los datos; JsonNode es sólo una vista.

[2.3 Paso de Objetos en MQL5 MQL5 requiere que todos los objetos de clase (incluyendo JsonNode ) pasados como argumentos de función deben ser pasados por referencia (usando &). Incorrecto: void myFunction(MQL5_Json::JsonNode nodo) Correcto: void myFunction(MQL5_Json::JsonNode &nodo


Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/62735

Market Watch Panel Utility Market Watch Panel Utility

Una herramienta de supervisión en tiempo real para MetaTrader 5 que muestra datos financieros clave, permite cambiar de símbolo rápidamente y listas de símbolos personalizables. Guarde y recargue símbolos, restablezca listas y personalice el texto y los colores del panel para una experiencia de negociación personalizada.

Tarantella Tarantella

Tarantella EA: Sistema avanzado de negociación de cuadrícula con capacidades de cobertura e integración de Perfil de Mercado. Utiliza filtrado de tendencia ADX, espaciado de cuadrícula basado en Fibonacci y condiciones de entrada de varios niveles (RSI/ATR/volumen) para ejecutar operaciones sólo dentro de las áreas de valor del Perfil de Mercado. Gestión inteligente del riesgo con trailing stops, activación del punto de equilibrio y cierre parcial de la cobertura.

Multi_Divergence_EA Multi_Divergence_EA

El EA identifica las configuraciones comerciales esperando a que un número definido por el usuario de indicadores (por ejemplo, 2 de 3) muestren divergencia simultáneamente. Este enfoque de confirmación multicapa filtra el ruido del mercado. Características principales: Motor de Confirmación Triple: Analiza las divergencias del RSI, MACD y Estocástico. Filtros avanzados: Filtro de Tendencia (MA) y Filtro de Volumen opcionales para una calidad de señal superior. Personalización Completa: Controle todos los ajustes de los indicadores, la sensibilidad de las divergencias y la lógica de las operaciones. Gestión profesional del riesgo: Utilice lotes fijos o gestión monetaria basada en porcentajes con SL/TP.

Spread lister - current, min, max Spread lister - current, min, max

EA Spread lister muestra los valores actuales, mínimos y máximos para todos los símbolos / instrumentos.