¡Necesito ayuda! No puedo resolver el problema, me encuentro con limitaciones de hardware - página 20
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
komposter, ¿puede utilizar una DLL en su EA?
Si es así, puedes hacer lo siguiente:
Empaquetar los datos en un archivo de tabla de cabecera, utilizando ZLIB
(http://www.zlib.net/)
Funcionará muy rápido (te sorprenderá lo rápido que es.
La DLL estará lista para funcionar en 3 mseg. Todo funcionará en "tiempo real").
Los datos se reducirán entre 5 y 8 veces y al final del mismo archivo (empaquetado)
contendrá la tabla con el ID, los desplazamientos y la longitud de los datos.
Si tiene una cantidad muy grande de registros en el archivo fuente, entonces tiene que compilar
en una subtabla (varias subtablas), indicando los desplazamientos en la tabla principal, para no tener que
para no tener que mirar toda la tabla, sino sólo una pequeña parte de ella.
Por ejemplo: Los datos del USD se almacenan desde el offset 0 hasta el 1023,
Datos de la UE de 1024 a 2047, etc.
Si los datos no están empaquetados en un solo archivo (serán enormes), habrá
una subtabla más (diminuta), en la que el empaquetador indicará el número de archivo.
Y cuando la DLL cargue los archivos, creará una subtabla común a partir de las subtablas de
de todos los archivos. Mejor aún, todas las compensaciones se almacenan en el primer archivo, y si
nos "salimos" de 1 archivo, los datos se toman del segundo archivo, etc.
Me olvidé...
Si sigue mi consejo, le recomiendo que empaque su
datos de texto con la función de empaquetado de cadenas Zlib (no datos binarios, funciona más rápido).
Creo que la función se llama ZCompressString...
La compresión, al igual que la codificación, puede ser ya estándar:
Métodos de encriptación de datos
Para especificar el método de conversión de datos (cifrado y cálculo de hash), se utiliza la enumeración ENUM_CRYPT_METHOD en las funciones CryptEncode() y CryptDecode().
ENUM_CRYPT_METHOD
Constante
Descripción
CRYPT_BASE64
Codificación BASE64 (transcodificación)
CRYPT_AES128
Encriptación AES con clave de 128 bits (16 bytes)
CRYPT_AES256
Cifrado AES de 256 bits (32 bytes)
CRYPT_DES
Cifrado DES con clave de 56 bits (7 bytes)
CRYPT_HASH_SHA1
Calcular HASH SHA1
CRYPT_HASH_SHA256
Calcular HASH SHA256
CRYPT_HASH_MD5
Cálculo HASH MD5
CRYPT_ARCH_ZIP
Archivo ZIP
La compresión, al igual que la codificación, puede ser ya estándar:
Métodos de encriptación de datos
Para especificar el método de conversión de datos (cifrado y cálculo de hash), se utiliza la enumeración ENUM_CRYPT_METHOD en las funciones CryptEncode() y CryptDecode().
ENUM_CRYPT_METHOD
Constante
Descripción
CRYPT_BASE64
Codificación BASE64 (transcodificación)
CRYPT_AES128
Encriptación AES con clave de 128 bits (16 bytes)
CRYPT_AES256
Cifrado AES de 256 bits (32 bytes)
CRYPT_DES
Cifrado DES con clave de 56 bits (7 bytes)
CRYPT_HASH_SHA1
Calcular HASH SHA1
CRYPT_HASH_SHA256
Calcular HASH SHA256
CRYPT_HASH_MD5
Cálculo HASH MD5
CRYPT_ARCH_ZIP
Archivo ZIP
La cuestión no es el cifrado, sino cómo acceder rápidamente a los datos.
El objetivo del archivado es reducir el tamaño de los datos y permitir la transferencia rápida de las compensaciones
no el archivo principal (20GB), sino uno 5-8 veces más pequeño.
Pero no basta con empaquetar, también hay que tener un mecanismo de acceso rápido a los datos.
P/S Zlib tiene funciones para la compresión y descompresión rápida de cadenas.
Señalé que ya no es necesario tener dlls de terceros para empaquetar o encriptar los datos. A diferencia de su método DLL.
No he hablado de resolver el problema de los topstarter.
Señalé que ya no es necesario tener dlls de terceros para empaquetar o encriptar los datos. A diferencia de su método DLL.
No he dicho nada de resolver el problema del tópico.
Una DLL no es un desempaquetador de datos, sino un mecanismo para extraer rápidamente datos de
un archivo empaquetado según un determinado esquema.
Pues bien, todo esto se puede hacer ahora fácilmente con las herramientas lingüísticas. La compresión está disponible a partir de la norma.
Estupendo, ahora el tópico probablemente resolverá su problema.
Nunca he trabajado con archivos en MQL5, voy a ver si es posible abrir
Nunca he trabajado con archivos en MQL5.
Sí, lo es :)
Todo funciona y es rápido. He descrito los métodos anteriores para hacer más eficientes las operaciones con archivos en nuestra implementación.
No estoy subestimando las habilidades y capacidades del terminal, pero
cuando necesité extraer datos de un archivo de 1,21Gb, con 21.345.728(!) líneas, hace un par de años,
http://ftp.micex.com/pub/info/historical_data/Securities_market/OrderBook20130206.rar
datos de la forma:
NO,SECCODE,BUYSELL,TIME,ORDERNO,ACTION,PRICE,VOLUME,TRADENO,TRADEPRICE
21345728,USD000UTSTOM,B,235000002,3568,0,29.6095,300000,,
Entonces, por el método que indiqué, el tiempo de búsqueda fue de 35-45 MICROSECUNDOS,
Es cierto que el expediente se preparó durante más de 2 días :(
P / S No se trata de qué usar (terminal o DLL), sino de cómo preparar los datos.
Y el hecho de que haya nuevas funciones en el terminal es muy bienvenido.
No estoy subestimando las capacidades del terminal, pero
cuando necesité extraer datos de un archivo de 1,21GB hace un par de años, con 21.345.728(!) líneas,
http://ftp.micex.com/pub/info/historical_data/Securities_market/OrderBook20130206.rar
datos de la forma:
NO,SECCODE,BUYSELL,TIME,ORDERNO,ACTION,PRICE,VOLUME,TRADENO,TRADEPRICE
21345728,USD000UTSTOM,B,235000002,3568,0,29.6095,300000,,
Entonces, por el método que indiqué, el tiempo de búsqueda fue de 35-45 MICROSECUNDOS,
Es cierto que el archivo se preparó durante más de 2 días :(