"10 dakikada MQL5 için DLL kütüphanesi nasıl yazılır ve veri alışverişi yapılır?" makalesinin tartışılması
Çok ilginç bir makale. Bütünlük için mutluluk yeterli değildir:
1. Teklifleri nereden alıyoruz, bunları hst dosyalarından almak mümkün mü?
2. MATLab 2009a veya 2009c'de elde edilen kitaplık ile bu kitaplık nasıl sabitlenir? Sonuçta orada da With ve With ++ var mı?
Büyük istek.
- Terminalin kendisinde alıntılar alıyoruz - bunlar artık hem ayrıntılı hem de derin (10 yıl veya daha fazla).
Hiçbir durumda doğrudan terminalin depolarının ikili dosyalarına girmemelisiniz - bu yalnızca ciddi veri erişim çakışmalarına yol açacaktır. Testler "Başardım, sorun yok" gösterse bile, yine de bu terminal verilerine ve harici bir programa eşzamanlı erişim anı gelecek ve sonuç olarak birileri kesinlikle kopacak. İnsanlar tekrar tekrar bu duruma düştüler. - MQL5'te kitaplıkları bağlamak, stdcall / cdecl DLL çağrı kurallarının şeffaf desteği nedeniyle çok daha kolay hale geldi.
Birisi MetaTrader 4/5 ve Matlab'ı DLL aracılığıyla bağlama hakkında iyi ve ayrıntılı bir makale yazarsa, 200 dolar ve daha fazlasını kazanacaktır.
MQL4.community web sitesinde zaten Matcad - MetaTrader 4 bağlantısı hakkında makaleler var:
- www.mql5.com
Alıntılarını gerçek zamanlı olarak Excel'de yayınlamaları için umutsuzca iki terminali birbirine bağlamam gerekiyor.
MT4'te bu, DDE aracılığıyla yapılabilir. MT5'te, tek çıkış yolu DLL'den geçiyor gibi görünüyor.
Ama gelen her işaret DLL'ye iletilirse... bence bu hayal edilemeyecek kadar yavaş bir şey olacak. Tabii ki, henüz uygulamaya çalışmadım ... ama dürüst olmak gerekirse, denemek istemiyorum. Ne olacağı delilik.
Kısacası, lütfen DDE'yi MT5'e iade edin. Bir anakronizm olsa da, bazen ihtiyaç duyulur.
PS Ve makale için teşekkürler, çok zamanında. Şu anda böyle bir materyalden yoksundum.
Renat, dll aramalarının hızı ne olacak?
Çağrı hızını kontrol etmek çok basittir. Örneğin, kabaca şöyle hesaplayabilirsiniz:
_DLLAPI int __stdcall fnCalcSpeed( int var1, int var2, int var3) { return ( 0 ); } #import "MQL5DLLSamples.dll" int fnCalcSpeed( int var1, int var2, int var3); #import int calls= 0 ; int ticks= GetTickCount (); while ( GetTickCount ()-ticks< 1000 ) { for ( int i= 0 ;i< 1000 ;i++) fnCalcSpeed( 1 , 2 , 3 ); calls++; } Print (calls * 1000 , "вызовов в секунду" );
Quad Q9400 @ 2.66Ghz'de saniyede 57.000 çağrı aldım. Aynı kod MetaTrader 4'te kontrol ve bağlama olmadığı için saniyede yaklaşık 20.000.000 çağrı veriyor.
MetaTrader 5'te DLL aramalarındaki kayıpları kesinlikle azaltmaya çalışacağız.
Tekliflerin dışa aktarımı yalnızca dll aracılığıyla mümkünse, dışa aktarılan her araç için bir komut dosyası asmanız gerektiği ortaya çıkıyor mu? Peki ya çok sayıda varsa? örneğin 50?
Birçok enstrüman için teklifleri tek bir komut dosyasında aktarmanın mümkün olduğunu anlıyorum, ancak bu, kenelerin kaybolmadığı DDE'nin tam teşekküllü bir ikamesi olmayacak.
Gerçek şu ki, "teklif vermek için bir arayüz sağlama" görevimiz yok.
Görevimiz, analitik sistemlerin geliştirilmesi için eksiksiz ve kendi kendine yeterli bir ortam yaratmaktır. Öyle bir ortam ki üçüncü parti programların bile kullanılmasına gerek kalmayacak.
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Bir makale yayınlandı MQL5 için 10 dakikada DLL kütüphanesi nasıl yazılır ve veri alışverişi yapılır? :
Yazar: Renat Fatkhullin