Ich brauche Hilfe! Ich kann das Problem nicht lösen, ich stoße an die Grenzen der Hardware - Seite 20

 

komposter, können Sie eine DLL in Ihrem EA verwenden?

Wenn ja, können Sie Folgendes tun:

Packen Sie die Daten mit der ZLIB in eine Header-Tabellen-Datei.

(http://www.zlib.net/)

Es wird sehr schnell funktionieren (Sie werden überrascht sein, wie schnell.

Die DLL ist innerhalb von 3 msec. einsatzbereit. Alles wird in "Echtzeit" funktionieren).

Die Daten werden 5-8 Mal reduziert und am Ende der gleichen Datei (gepackt)

enthält eine Tabelle mit ID, Offsets und Datenlänge.

Wenn Sie eine sehr große Anzahl von Datensätzen in der Quelldatei haben, müssen Sie Folgendes kompilieren

in eine Untertabelle (mehrere Untertabellen), wobei die Offsets in der Haupttabelle angegeben werden, so dass Sie nicht

damit Sie nicht die ganze Tabelle durchsehen müssen, sondern nur einen kleinen Teil davon.

Zum Beispiel: USD-Daten werden von 0 Offset bis 1023 gespeichert,

EU-Daten von 1024 bis 2047 usw.

Wenn die Daten nicht in eine Datei gepackt werden (sie werden riesig sein), gibt es

eine weitere (kleine) Untertabelle, in der der Packer die Dateinummer angibt.

Und wenn die DLL die Dateien lädt, erstellt sie eine gemeinsame Untertabelle aus den Untertabellen von

von allen Dateien. Besser noch: Alle Offsets werden in der ersten Datei gespeichert, und wenn

Wenn wir aus einer Datei "aussteigen", werden die Daten aus der zweiten Datei entnommen, usw.


Ich vergaß...

Wenn Sie meinen Rat befolgen, empfehle ich Ihnen, Ihre

Textdaten mit der Zlib-String-Packing-Funktion (keine Binärdaten, das geht schneller).

Ich glaube, die Funktion heißt ZCompressString...

zlib Home Site
  • www.zlib.net
Web page copyright © 1996-2014 Greg Roelofs, Jean-loup Gailly and Mark Adler. zlib software copyright © 1995-2012 Jean-loup Gailly and Mark Adler.
 

Das Zippen sowie die Verschlüsselung können bereits Standard sein:


Methoden zur Datenverschlüsselung


Zur Angabe der Methode der Datenumwandlung (Verschlüsselung und Hash-Berechnung) wird die Enumeration ENUM_CRYPT_METHOD in den Funktionen CryptEncode() und CryptDecode() verwendet.

ENUM_CRYPT_METHOD

Konstante

Beschreibung

CRYPT_BASE64

BASE64-Verschlüsselung (Transcodierung)

CRYPT_AES128

AES-Verschlüsselung mit 128-Bit-Schlüssel (16 Bytes)

CRYPT_AES256

256 Bit (32 Bytes) AES-Verschlüsselung

CRYPT_DES

DES-Verschlüsselung mit Schlüssel 56 Bit (7 Bytes)

CRYPT_HASH_SHA1

HASH SHA1 berechnen

CRYPT_HASH_SHA256

HASH SHA256 berechnen

CRYPT_HASH_MD5

HASH-Berechnung MD5

CRYPT_ARCH_ZIP

ZIP-Archivierung

Документация по MQL5: Общие функции / CryptDecode
Документация по MQL5: Общие функции / CryptDecode
  • www.mql5.com
Общие функции / CryptDecode - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Renat:

Das Zippen sowie die Verschlüsselung können bereits Standard sein:


Methoden zur Datenverschlüsselung


Um die Methode der Datenumwandlung (Verschlüsselung und Hash-Berechnung) zu spezifizieren, wird die Enumeration ENUM_CRYPT_METHOD in den Funktionen CryptEncode() und CryptDecode() verwendet.

ENUM_CRYPT_METHOD

Konstante

Beschreibung

CRYPT_BASE64

BASE64-Verschlüsselung (Transcodierung)

CRYPT_AES128

AES-Verschlüsselung mit 128-Bit-Schlüssel (16 Bytes)

CRYPT_AES256

256 Bit (32 Bytes) AES-Verschlüsselung

CRYPT_DES

DES-Verschlüsselung mit Schlüssel 56 Bit (7 Bytes)

CRYPT_HASH_SHA1

HASH SHA1 berechnen

CRYPT_HASH_SHA256

HASH SHA256 berechnen

CRYPT_HASH_MD5

HASH-Berechnung MD5

CRYPT_ARCH_ZIP

ZIP-Archivierung

Es geht nicht um die Verschlüsselung, sondern darum, wie man schnell auf die Daten zugreifen kann.

Der Zweck der Archivierung besteht darin, den Umfang der Daten zu verringern und die schnelle Übertragung von Offsets zu ermöglichen.

nicht die Hauptdatei (20 GB), sondern eine 5-8 Mal kleinere Datei.

Aber es reicht nicht aus, nur zu packen, man muss auch einen Mechanismus für den schnellen Zugriff auf die Daten haben.

P/S Zlib verfügt über Funktionen zur schnellen Komprimierung und Dekomprimierung von Zeichenketten.

 

Ich habe darauf hingewiesen, dass zum Packen oder Verschlüsseln der Daten keine Dlls von Drittanbietern mehr erforderlich sind. Im Gegensatz zu Ihrer DLL-Methode.

Ich habe nicht davon gesprochen, das Problem des Topstarters zu lösen.

 
Renat:

Ich habe darauf hingewiesen, dass zum Packen oder Verschlüsseln der Daten keine Dlls von Drittanbietern mehr erforderlich sind. Im Gegensatz zu Ihrer DLL-Methode.

Ich habe nicht über eine Lösung für das Problem des Themenstarters gesprochen.

Eine DLL ist kein Datenentpacker, sondern ein Mechanismus zum schnellen Extrahieren von Daten aus

nach einem bestimmten Schema gepackte Datei.

 
All dies ist jetzt mit der Sprache leicht möglich. Die Kompression ist standardmäßig verfügbar.
 
Renat:
Nun, all dies ist jetzt mit den Sprachwerkzeugen leicht möglich. Die Kompression ist in der Norm enthalten.

Toll, jetzt wird der Themenstarter wahrscheinlich sein Problem lösen.

Ich habe noch nie mit Dateien in MQL5 gearbeitet, ich werde sehen, ob es möglich ist, sie zu öffnen

Ich habe noch nie mit Dateien in MQL5 gearbeitet.

Ja, das ist sie :)

bool  FileSeek(
   int                  file_handle,     // handle файла
   long                 offset,          // в байтах
   ENUM_FILE_POSITION   origin           // позиция для отсчета
   );
Будем надеятся, что терминал работает так же быстро, как и нативная DLL
 
Alles funktioniert, und es ist schnell. Ich habe die oben genannten Methoden beschrieben, um die Effizienz von Dateivorgängen in unserer Implementierung zu verbessern.
 
Renat:
Alles funktioniert, und es ist schnell. Ich habe die oben genannten Methoden beschrieben, um die Dateivorgänge in unserer Implementierung effizienter zu gestalten.

Ich will die Fähigkeiten und Möglichkeiten des Terminals nicht unterbewerten, aber

als ich vor ein paar Jahren Daten aus einer 1,21 GB großen Datei mit 21.345.728(!) Zeilen extrahieren musste,

http://ftp.micex.com/pub/info/historical_data/Securities_market/OrderBook20130206.rar

Daten in der Form:

NO,SECCODE,BUYSELL,TIME,ORDERO,ACTION,PRICE,VOLUME,TRADENO,TRADEPRICE

21345728,USD000UTSTOM,B,235000002,3568,0,29.6095,300000,,

Nach der von mir angegebenen Methode betrug die Suchzeit 35-45 MIKROSECUNDS,

Es ist richtig, dass die Datei mehr als 2 Tage lang vorbereitet wurde :(

P / S Es geht nicht darum, was man verwendet (Terminal oder DLL), sondern wie man die Daten aufbereitet.

Und die Tatsache, dass es neue Funktionen im Terminal gibt, ist sehr willkommen!

 
Mikalas:

Ich will die Fähigkeiten des Terminals nicht unterschätzen, aber

als ich vor ein paar Jahren Daten aus einer 1,21 GB großen Datei mit 21.345.728(!) Zeilen extrahieren musste,

http://ftp.micex.com/pub/info/historical_data/Securities_market/OrderBook20130206.rar

Daten in der Form:

NO,SECCODE,BUYSELL,TIME,ORDERO,ACTION,PRICE,VOLUME,TRADENO,TRADEPRICE

21345728,USD000UTSTOM,B,235000002,3568,0,29.6095,300000,,

Nach der von mir angegebenen Methode betrug die Suchzeit dann 35-45 MIKROSECUNDS,

Es ist richtig, dass die Datei mehr als 2 Tage lang vorbereitet wurde :(

Vielleicht Millisekunden? Auf Windows-basierten Betriebssystemen können Messungen in Mikrosekunden einfach nicht durchgeführt werden...