Besoin d'aide ! Je ne peux pas résoudre le problème, je me heurte à des limitations matérielles. - page 20
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
komposter, pouvez-vous utiliser une DLL dans votre EA ?
Si c'est le cas, vous pouvez faire ce qui suit :
Emballer les données dans un fichier de table d'en-tête, en utilisant ZLIB.
(http://www.zlib.net/)
Il fonctionnera très rapidement (vous serez surpris de la rapidité avec laquelle il fonctionne.
La DLL sera prête à travailler dans 3 msec. Tout fonctionnera en "temps réel").
Les données seront réduites 5-8 fois et à la fin du même fichier (packed)
contiendra un tableau avec l'ID, les offsets et la longueur des données.
Si vous avez une très grande quantité d'enregistrements dans le fichier source, alors vous devez compiler
dans une sous-table (plusieurs sous-tables), en indiquant les décalages dans la table principale, de sorte que vous n'avez pas besoin de
afin de ne pas avoir à consulter l'ensemble du tableau, mais seulement une petite partie de celui-ci.
Par exemple : Les données USD sont stockées de 0 offset à 1023,
Données de l'UE de 1024 à 2047, etc.
Si les données ne sont pas regroupées dans un seul fichier (il sera énorme), il y aura
un autre (minuscule) sous-tableau, dans lequel l'emballeur indiquera le numéro de fichier.
Et quand DLL charge les fichiers, il crée une sous-table commune à partir des sous-tables de
de tous les dossiers. Mieux encore, tous les décalages sont stockés dans le premier fichier, et si
on "sort" d'un fichier, les données sont prises dans le deuxième fichier, etc.
J'ai oublié...
Si vous suivez mon conseil, je vous recommande d'emballer votre
données textuelles avec la fonction d'empaquetage de chaînes de caractères de Zlib (pas de données binaires, cela fonctionne plus rapidement).
Je pense que la fonction s'appelle ZCompressString...
Le zippage, ainsi que le cryptage, peuvent déjà être des standards :
Méthodes de cryptage des données
Pour spécifier la méthode de conversion des données (cryptage et calcul de hachage), l'énumération ENUM_CRYPT_METHOD est utilisée dans les fonctions CryptEncode() et CryptDecode().
ENUM_CRYPT_METHOD
Constant
Description
CRYPT_BASE64
Cryptage BASE64 (transcodage)
CRYPT_AES128
Cryptage AES avec clé de 128 bits (16 octets)
CRYPT_AES256
Cryptage AES 256 bits (32 octets)
CRYPT_DES
Cryptage DES avec une clé de 56 bits (7 octets)
CRYPT_HASH_SHA1
Calculer HASH SHA1
CRYPT_HASH_SHA256
Calculer HASH SHA256
CRYPT_HASH_MD5
Calcul du HASH MD5
CRYPT_ARCH_ZIP
Archivage ZIP
La compression, ainsi que le cryptage, peuvent déjà être des standards :
Méthodes de cryptage des données
Pour spécifier la méthode de conversion des données (cryptage et calcul de hachage), l'énumération ENUM_CRYPT_METHOD est utilisée dans les fonctions CryptEncode() et CryptDecode().
ENUM_CRYPT_METHOD
Constant
Description
CRYPT_BASE64
Cryptage BASE64 (transcodage)
CRYPT_AES128
Cryptage AES avec clé de 128 bits (16 octets)
CRYPT_AES256
Cryptage AES 256 bits (32 octets)
CRYPT_DES
Cryptage DES avec une clé de 56 bits (7 octets)
CRYPT_HASH_SHA1
Calculer HASH SHA1
CRYPT_HASH_SHA256
Calculer HASH SHA256
CRYPT_HASH_MD5
Calcul du HASH MD5
CRYPT_ARCH_ZIP
Archivage ZIP
La question n'est pas celle du cryptage, mais celle de l'accès rapide aux données.
L'archivage a pour but de réduire la taille des données et de permettre le transfert rapide des offsets.
pas le fichier principal (20 Go), mais un fichier 5 à 8 fois plus petit.
Mais il ne suffit pas d'emballer, il faut aussi disposer d'un mécanisme d'accès rapide aux données.
P/S Zlib possède des fonctions de compression et de décompression rapide des chaînes de caractères.
J'ai souligné qu'il n'est plus nécessaire d'avoir des dlls de tiers pour emballer ou crypter les données. Contrairement à votre méthode DLL.
Je n'ai pas parlé de résoudre le problème du topstarter.
J'ai souligné qu'il n'est plus nécessaire d'avoir des dlls de tiers pour emballer ou crypter les données. Contrairement à votre méthode DLL.
Je n'ai pas parlé d'une solution au problème de l'auteur du sujet.
Une DLL n'est pas un dépileur de données, mais un mécanisme permettant d'extraire rapidement des données de
fichier emballé selon un certain schéma.
Eh bien, tout cela est maintenant facile à faire en utilisant les outils linguistiques. La compression est disponible à partir de la norme.
Super, maintenant le topicstarter va probablement résoudre son problème.
Je n'ai jamais travaillé avec des fichiers dans MQL5, je vais voir s'il est possible d'ouvrir
Je n'ai jamais travaillé avec des fichiers dans MQL5.
Oui, c'est vrai :)
Tout fonctionne, et c'est rapide. J'ai décrit les méthodes ci-dessus pour rendre les opérations de fichiers plus efficaces dans notre implémentation.
Je ne sous-estime pas les capacités et les possibilités du terminal, mais...
quand j'ai eu besoin d'extraire des données d'un fichier de 1,21 Go, avec 21 345 728( !) lignes, il y a quelques années,
http://ftp.micex.com/pub/info/historical_data/Securities_market/OrderBook20130206.rar
des données de la forme :
NO,SECCODE,BUYSELL,TIME,ORDERNO,ACTION,PRICE,VOLUME,TRADENO,TRADEPRICE
21345728,USD000UTSTOM,B,235000002,3568,0,29.6095,300000,,
Ensuite, par la méthode que j'ai indiquée, le temps de recherche était de 35-45 MICROSECUNDS,
Il est vrai que le dossier a été préparé pendant plus de 2 jours :(
P / S Il ne s'agit pas de savoir ce qu'il faut utiliser (terminal ou DLL), mais comment préparer les données.
Et le fait qu'il y ait de nouvelles fonctionnalités dans le terminal est très appréciable !
Je ne sous-estime pas les capacités du terminal, mais...
lorsque j'ai eu besoin d'extraire des données d'un fichier de 1,21 Go il y a quelques années, avec 21 345 728 ( !) lignes,
http://ftp.micex.com/pub/info/historical_data/Securities_market/OrderBook20130206.rar
des données de la forme :
NO,SECCODE,BUYSELL,TIME,ORDERNO,ACTION,PRICE,VOLUME,TRADENO,TRADEPRICE
21345728,USD000UTSTOM,B,235000002,3568,0,29.6095,300000,,
Ensuite, par la méthode que j'ai indiquée, le temps de recherche était de 35-45 MICROSECUNDS,
Il est vrai que le dossier a été préparé pendant plus de 2 jours :(