Discusión sobre el artículo "Trabajamos con archivos ZIP con los medios de MQL5, sin usar bibliotecas ajenas"
¿Alguien ha probado el código? ¿Funciona en mt 4?
La impresionante compresión de los datos históricos, junto con la idea de aplicarla a los contenidos de la memoria RAM comentada anteriormente, sugiere que hay esperanzas de reducir radicalmente los recursos de memoria que necesita el terminal MT5. ¿Sucederá?
El reparto notorio de estructuras es jurar. Aquí está la versión corregida en el archivo adjunto.
'm_array' - structures containing objects are not allowed Dictionary.mqh 252 25 cannot cast 'DoubleValue' to 'ULongValue' Dictionary.mqh 209 14
¿Debe trabajar bajo MT4? Tengo esta situación.
¿Ayuda#property #strist?
La nueva versión añade un mecanismo adicional para extraer estructuras de datos del archivo si no se rellenan los campos de estructura. (Se ha observado que los productos de Microsoft escupen el estándar desde una torre alta y simplemente no rellenan campos como "tamaño del archivo"). La nueva versión funciona ahora con esos archivos problemáticos.
Ya he añadido la nueva versión al archivo del artículo. Parece que ya se ha actualizado, así que puedes descargar el archivo adjunto al artículo.
¿Debería funcionar bajo MT4? Tengo la misma situación.
Ahora he mirado cuidadosamente su error - la misma situación con las estructuras de fundición, pero en un contenedor diferente - CDictionary. Reemplace Include\Dictionary.mqh con la variante adjunta a continuación.
Y sí, todo funciona bien en MT4 y voy a decir más CZip es un caballo de batalla en mis proyectos en MT4.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso

Artículo publicado Trabajamos con archivos ZIP con los medios de MQL5, sin usar bibliotecas ajenas:
El lenguaje MQL5 prosigue su desarrollo, continuamente se le añaden nuevas funciones para trabajar con datos. Desde hace cierto tiempo, gracias a las innovaciones, resulta posible trabajar con archivos ZIP con las herramientas estándar MQL5, sin tener que implicar bibliotecas DLL ajenas. Este artículo describe de forma detallada cómo hacerlo, usando como ejemplo la descripción de la clase CZip, un instruemnto universal de lectura, creación y modificación de archivos ZIP.
Cierta vez, al autor de este artículo le llamó la atención un peculiaridad interesante de la función CryptDecode, que era precisamente la posibilidad de descomprimir la matriz ZIP trasmitida a ella. Este modificador fue introducido por los desarrolladores de la plataforma comercial MetaTrader 5 para que fuese posible descomprimir la respuesta de ciertos servidores, usando la función estándar WebRequest. Sin embargo, debido a ciertas peculiaridades del formato ZIP, no resultaba posible usarla directamente.
Era necesaria una autenticación adicional: para descomprimir un archivo, resultaba necesario saber su suma hash antes de la compresión: Adler-32, que, como era natural, no existía. Sin embargo, al discutir este problema, los desarrolladores simplificaron el asunto y cargaron de nuevo CryptDecode y CryptEncode, su gemelo opuesto, con una bandera especial que ignoraba el hash Adler32 al descomprimir los datos transmitidos. Para los usuarios inexpertos en el plano técnico, esta novedad se puede explicar de forma sencilla: gracias a ella es posible un trabajo funcionalmente pleno con los archivos ZIP. El artículo describe detalladamente el formato del archivo ZIP, las peculiaridades de guardado en el mismo, y propone para el trabajo con el archivo una cómoda clase CZip orientada a objetos.
Cada archivo ZIP es un fichero binario que contiene una secuencia ordenada de bytes. Por otra parte, en el archivo ZIP cada fichero tiene nombre, atributos (por ejemplo, la hora de modificación del archivo) y otras propiedades que estamos acostumbrados a ver en el sistema de ficheros de cualquier sistema operativo. Por eso, aparte de datos comprimidos, cada archivo ZIP guarda el nombre del fichero comprimido, sus atributos y otra información accesoria. Esta información accesoria se ubica en un orden muy estricto y tiene una estructura regular. Por ejemplo, si en el archivo se contienen dos ficheros (File#1 y File#2), entonces el archivo tendrá el siguiente aspecto:
Fig. 1. Representación esquemática de un archivo ZIP que contiene dos ficheros: File#1 y File#2
Autor: Vasiliy Sokolov