x64 platformları için yeni MQL5 derleyicisinin test edilmesi - hesaplamaların 2'den 10'a hızlandırılması! - sayfa 2
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Örneğin, terminaller arası iletişim.
Eh, böyle sapıklık yapıyorsanız, tabii ki DLL gerekli bir özelliktir...
Ama şahsen, sadece böyle bir görev için, bunun için gerçekten bir DLL'ye ihtiyacım olmadığına karar verdim. Şu anda bir DC'de fiyat teklifi alacak ve yalnızca başka bir DC'ye değil, aynı zamanda MetaTrader'ın olmadığı ticaret için sinyaller gönderecek bir danışman düşünüyorum. (Bu arada DukaKopy, MetaQuotes'in bu saygıdeğer komisyoncuyla ilgilenip ilgilenmediğini merak ediyorum?).
DLL yönünde düşündüm. Ancak paylaşılan dosyaların çok daha güvenli ve daha makul olduğuna karar verdim. MetaTrader'ın dosyaya sinyal yazmasına izin verin. Ve başka bir MetaTrader (veya JForex veya başka biri) - onları okumalarına ve yürütmelerine izin verin.
Bu arada, burada dizilere yapılan referansları düşünüyordum ...
Renat , bir öneride bulunuyorum:
Standart Kitaplığımız olduğundan, aşağıdaki prototiple OnCalculate() işlevinin bir türevini eklememeli miyiz:
int OnCalculate ( const int Rates_total, // giriş zaman serisinin boyutu
const int prev_calculated, // önceki çağrıda işlenen çubuklar
const СiTime* ptTime, // Zaman
const CiOpen * poOpen, // Aç
const CiHigh* phYüksek, // Yüksek
const CiLow* plLow, // Düşük
const CiClose* pcClose, // Kapat
const CiTickVolume* ptvT ickVolume, // Tick Volume
const CiRealVolume* prvRealVolume , // Gerçek Hacim
const CiSpread* psS pread // Yayılma
);
?
Benim düşünceme göre, bu MetaTrader'da çok küçük değişiklikler gerektirecektir, ancak diğer yandan işlev, kopyalanmadan işleyici sınıflarına iletilebilen dizilere hemen işaretçiler sağlar. Ve Standart Kütüphane fikri popüler hale geliyor.
Gerçek bir büyük proje örneğinde (~ 20.000 satır kaynak kodu) eski ve yeni derleyicinin performansını karşılaştırmanın ilk sonuçlarını aldım.
Derleyicinin eski sürümünde derlenen programın çalışma süresinin sonuçları (4 çalıştırma):
Derleyicinin yeni sürümünde derlenen programın çalışma süresinin sonuçları (4 çalıştırma):
*Programın ikinci ve sonraki lansmanları sıcak bir önbellek üzerinde gerçekleştirildi - gördüğünüz gibi, sıcak bir önbellek performansı %15-30 oranında artırıyor.
Gördüğünüz gibi, yeni derleyicideki çalışmanın sonuçları daha iyi: 20.000'den fazla anlaşma ve siparişin ayrıştırılması ilk durumda ~6,4 saniye, ikinci durumda ~ 5,4 saniye sürdü, yani. %15-20 performans artışı.
Performans iyileştirmesi daha büyük olabilir, ancak çoğu zaman sistem işlev çağrıları tarafından alınır.
Yeni derleyici, toplam hacmi 20.000 satırdan fazla kaynak kodu olan projede hiçbir hata bulamadı. Bu projenin derleyicinin eski versiyonu için oluşturulduğu düşünüldüğünde bu harika bir sonuç.
Ancak, yeni derleyici, dosya yollarının yanlış görüntülenmesiyle ilgili birkaç uyarı mesajı yayınladı (eğik çizgiden kaçma gereksinimi):
Bu, birkaç küçük değişiklikle kolayca karşılanabilecek oldukça adil bir gerekliliktir.
Böylece, MQL5'teki büyük projelerin bile yeni derleyici için hazır olduğu ve profesyonel geliştiriciler için buna geçişin zor olmayacağı sonucuna varabiliriz.
...
" Kod oluşturma hatası 1 1 " alıyorum
...
Matematik ve kendi hesaplamalarındaki ana kazanç.
Yine de iyi, çünkü minimum sistem işlevleri çağrısıyla kendi ortamınızı yaratabilirsiniz.
(ortamı bir kez sınıflarımıza kopyalıyoruz ve doğrudan onunla çalışıyoruz)
Eh, böyle sapıklık yapıyorsanız, tabii ki DLL gerekli bir özelliktir...
Ama şahsen, sadece böyle bir görev için, bunun için gerçekten bir DLL'ye ihtiyacım olmadığına karar verdim. Şu anda bir DC'de fiyat teklifi alacak ve yalnızca başka bir DC'ye değil, aynı zamanda MetaTrader'ın olmadığı ticaret için sinyaller gönderecek bir danışman düşünüyorum. (Bu arada DukaKopy, MetaQuotes'un bu saygıdeğer komisyoncuyla ilgilenip ilgilenmeyeceğini merak ediyorum?).
DLL yönünde düşündüm. Ancak paylaşılan dosyaların çok daha güvenli ve daha makul olduğuna karar verdim. MetaTrader'ın dosyaya sinyal yazmasına izin verin. Ve başka bir MetaTrader (veya JForex veya başka biri) - onları okumalarına ve yürütmelerine izin verin.
adlandırılmış kanallara sahip bir seçenek var, ancak burada bir ara sunucuya ihtiyacınız var,
nasıl yapılır, forumda örnekleri var. işe yaradığı bile söylenebilir.
Örneğin, terminaller arası iletişim.
adlandırılmış kanallara sahip bir seçenek var, ancak burada bir ara sunucuya ihtiyacınız var,
nasıl yapılır, forumda örnekleri var. işe yaradığı bile söylenebilir.
Adlandırılmış borulara gerek yok! SQL desteği eklemek için sabırsızlanıyoruz. Tablo üzerinden veri alışverişi. SQL, çok iş parçacıklı, yüksek yüklü sistemler için yerleşik destektir.