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

Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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...
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
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.
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.
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 :)
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ş!
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 :(