yardıma ihtiyacım var! Görev çözülmedi, demirin sınırlamalarıyla karşılaşıyorum - sayfa 20

 

komposter, EA'nızda bir DLL kullanabilir misiniz?

Evet ise, aşağıdakileri yapabilirsiniz:

verileri ZLIB kullanarak başlık tablosuyla dosyaya paketleyin

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

Çok hızlı çalışacak (ne kadar hızlı olduğuna şaşıracaksınız.

DLL çalışmaya hazır - 3 ms. Her şey gerçek zamanlı olarak çalışacaktır ).

Veriler 5-8 kat azaltılacak ve aynı dosyanın sonunda (paketlenmiş)

ID, ofsetler ve veri uzunluğuna sahip bir tablo saklanacaktır.

Kaynak dosyada çok sayıda kaydınız varsa, yazmanız gerekir.

alt tablo(birkaç alt tablo), ana tabloya göre ofsetleri belirterek, böylece

tablonun tamamını değil, yalnızca küçük bir bölümünü yineleyin.

Örneğin: USD verileri ofset 0'dan 1023'e kadar saklanır,

1024'ten 2047'ye kadar olan AB verileri, vb.

Veriler tek bir dosyada paketlenmezse (büyük olacaktır), o zaman

paketleyicinin dosya numarasını göstereceği bir (küçük) alt tablo daha.

Ve DLL dosyaları yüklediğinde, alt tablolardan ortak bir alt tablo oluşturacaktır.

Tüm dosyalar. Daha da iyisi, tüm ofsetleri ilk dosyada saklayın ve eğer

1 dosyanın sınırlarının ötesine "gidiyoruz", ardından veriler ikinciden vb.


Unutmuş olmak..

Tavsiyeme uyarsanız, bavulunuzu hazırlamanızı öneririm.

metin verileri Zlib dize paketleme işlevini kullanır (ikili veriler değil, bu şekilde daha hızlı çalışır).

Görünüşe göre bu işlevin adı 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.
 

Zip ve şifreleme zaten standart olabilir:


Veri Şifreleme Yöntemleri


ENUM_CRYPT_METHOD numaralandırması, CryptEncode() ve CryptDecode() işlevlerinde veri dönüştürme yöntemini (şifreleme ve karma hesaplama) belirtmek için kullanılır.

ENUM_CRYPT_METHOD

Devamlı

Tanım

CRYPT_BASE64

BASE64 şifreleme (kod dönüştürme)

CRYPT_AES128

128 bit (16 bayt) anahtarlı AES şifrelemesi

CRYPT_AES256

256 bit (32 bayt) anahtarlı AES şifrelemesi

CRYPT_DES

56 bit (7 bayt) anahtarlı DES şifrelemesi

CRYPT_HASH_SHA1

HASH SHA1 hesaplaması

CRYPT_HASH_SHA256

HASH SHA256 hesaplaması

CRYPT_HASH_MD5

HASH MD5 hesaplaması

CRYPT_ARCH_ZIP

ZIP arşivleme

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

Her zamanki gibi zipleyebilir ve şifreleyebilirsiniz:


Veri Şifreleme Yöntemleri


ENUM_CRYPT_METHOD numaralandırması, CryptEncode() ve CryptDecode() işlevlerinde veri dönüştürme yöntemini (şifreleme ve karma hesaplama) belirtmek için kullanılır.

ENUM_CRYPT_METHOD

Devamlı

Tanım

CRYPT_BASE64

BASE64 şifreleme (kod dönüştürme)

CRYPT_AES128

128 bit (16 bayt) anahtarlı AES şifrelemesi

CRYPT_AES256

256 bit (32 bayt) anahtarlı AES şifrelemesi

CRYPT_DES

56 bit (7 bayt) anahtarlı DES şifrelemesi

CRYPT_HASH_SHA1

HASH SHA1 hesaplaması

CRYPT_HASH_SHA256

HASH SHA256 hesaplaması

CRYPT_HASH_MD5

HASH MD5 hesaplaması

CRYPT_ARCH_ZIP

ZIP arşivleme

Topikstarter'ın sorusu şifreleme ile ilgili değil, verilere hızlı bir şekilde erişmenin bir yolu ile ilgili.

Paketleme, veri miktarını azaltmak ve ofsetler arasında hızla ilerlemek için kullanılır

ana (20GB) dosya değil, 5-8 kat azaltıldı.

Sadece paketleme yeterli değil, yine de verilere hızlı erişim için bir mekanizmaya ihtiyacınız var .

P/S Zlib, hızlı dizi sıkıştırma ve açma işlevlerine sahiptir.

 

Verileri paketlemek veya şifrelemek için artık üçüncü taraf dll'lerinin gerekli olmadığına dikkat çektim. DLL ile yolunun aksine.

Konuyu başlatan sorunun çözümünden bahsetmedi.

 
Renat :

Verileri paketlemek veya şifrelemek için artık üçüncü taraf dll'lerinin gerekli olmadığına dikkat çektim. DLL ile yolunun aksine.

Konuyu başlatan sorunun çözümünden bahsetmedi.

DLL bir paketleyici değildir - bir veri paketi açıcıdır, ancak

belirli bir şemaya göre paketlenmiş bir dosya.

 
Yani tüm bunlar artık dil aracılığıyla kolayca yapılıyor. Sıkıştırma standart olarak mevcuttur.
 
Renat :
Yani tüm bunlar artık dil aracılığıyla kolayca yapılıyor. Sıkıştırma standart olarak mevcuttur.

Harika, şimdi konu başlatıcı muhtemelen sorununu çözecektir.

MQL5'teki dosyalarla hiç çalışmadım, şimdi açmanın mümkün olup olmadığını okuyacağım

ofsetlerin kullanılabilmesi için bir akış olarak dosyalayın.

Evet işe yarayacak :)

 bool    FileSeek (
   int                   file_handle,     // handle файла
   long                  offset,           // в байтах
   ENUM_FILE_POSITION    origin           // позиция для отсчета
   );
Будем надеятся, что терминал работает так же быстро, как и нативная DLL
 
Her şey çalışıyor ve hızlı. Yukarıdaki uygulamamızda dosya işlemlerinin verimliliğini artırma yöntemlerini anlattım.
 
Renat :
Her şey çalışıyor ve hızlı. Yukarıdaki uygulamamızda dosya işlemlerinin verimliliğini artırma yöntemlerini anlattım.

Terminalin yeteneklerini ve yeteneklerini küçümsemiyorum, ancak

birkaç yıl önce, 21.345.728(!) satırlı 1.21GB'lık bir dosyadan veri çıkarmam gerektiğinde,

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

veriyi gör:

HAYIR,SECCODE,ALIM SATIŞ,ZAMAN,SİPARİŞ,EYLEM,FİYAT,HACİM,TRADENO,TİCARET FİYATI

21345728,USD000UTSTOM,B,235000002,3568.0,29.6095.300000,,

Ardından belirttiğim yönteme göre arama süresi 35-45 MİKROSANİYE,

dosyanın 2 günden fazla süredir hazırlandığını söylemek doğru :(

P/S Ne kullanılacağı (terminal veya DLL) değil, verilerin nasıl hazırlanacağı ile ilgilidir.

Ve terminalde yeni özelliklerin ortaya çıkması çok hoş!

 
Mikalas :

Terminalin yeteneklerini küçümsemiyorum ama

birkaç yıl önce, 21.345.728(!) satırlı 1.21GB'lık bir dosyadan veri çıkarmam gerektiğinde,

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

veriyi gör:

HAYIR,SECCODE,ALIM SATIŞ,ZAMAN,SİPARİŞ,EYLEM,FİYAT,HACİM,TRADENO,TİCARET FİYATI

21345728,USD000UTSTOM,B,235000002,3568.0,29.6095.300000,,

Ardından belirttiğim yönteme göre arama süresi 35-45 MİKROSANİYE,

dosyanın 2 günden fazla süredir hazırlandığını söylemek doğrudur :(

Belki milisaniye? Windows tabanlı bir işletim sisteminde, mikrosaniye cinsinden ölçümler basitçe yapılamaz ...