"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ı - sayfa 2

 
MQL5'te dizeleri dll'ye geçirerek henüz bir anı kontrol etmedim

MQL4-DLL paketindeki dizeleri geçerken böyle bir sorun fark ettim. MQL4 kodunda, DLL'deki işlevi çağırıyorum ve dizeyi iletiyorum:

 #import "MyDll.dll"
void passSymbol(string symb);






void start() {

    passSymbol(Symbol());

}

ve dll'de bu satırı aracın adıyla kabul ediyorum

_DLLAPI int __stdcall passSymbol(char* symbol) {
   указатель symbol в какой-то момент не содержит имени инструмента а левые символы вообще.
}


Ve bir noktada, bir noktada (normal çalışmak için belki yarım gün), dll aniden araç adı yerine anlaşılmaz karakterler içeren bir sol dize alır.
Belki benzer kodu mql5'te kontrol edebilirsiniz? MQL4'te belleğe işaretçi ile görülecek bir şey yanlıştı veya bazen terminalin içinde iş parçacığı dizisine erişim çakışması oluyor.

double diziler ve int değişkenleri doğru ve bu tür problemler olmadan geçirilir.

Daha sonra MQL5-DLL paketi için zamanın ne zaman görüneceğini bir test yazacağım, ancak şu anda bu anları da test ediyorsanız, her seferinde işlemi tekrarlayarak dizeleri dll'ye geçirme kararlılığını kontrol etmek için böyle bir test yazın. uzun bir süre için işaretleyin.

 
GarF1eld :

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.

Renat :

Gerçek şu ki, "teklif vermek için bir arayüz sağlama" görevimiz yok.

Görevimiz , analitik sistemlerin geliştirilmesi için tam teşekküllü ve kendi kendine yeterli bir ortam yaratmaktır . Öyle bir ortam ki üçüncü parti programların bile kullanılmasına gerek kalmayacak.

Cevap elbette ilginç. " MQL5 için DLL kitaplığı nasıl yazılır ve 10 dakikada veri alışverişi nasıl yapılır?" konusunun başlığı, ayrıca bu makaleye bakmanız gerekir Göstergeler arasında veri aktarma - ağrılı bir soruna basit bir çözüm - ve yukarıdaki görevle karşılaştırmalısınız ( italik olarak vurgulanmıştır).
 
Renat :

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.


GUI çok zayıf - mantığı yazmak 2 gün sürdü, hesaplanan bilgileri bir şekilde görüntülemek bütün gün sürdü

Sonuç olarak her şeyden vazgeçtim - veri aktarımı yaptım ( https://www.mql5.com/en/forum/382 ) ve hayatın tadını çıkardım

Geliştiriciler kendilerine çok mu yüksek hedefler belirliyor?

Ve her şey uzun zaman önce yapıldıysa (C, Delphi, ...) neden tekerleği yeniden icat edelim?

 
yu-sha :

GUI çok zayıf - mantığı yazmak 2 gün sürdü, hesaplanan bilgileri bir şekilde görüntülemek bütün gün sürdü

Sonuç olarak her şeyden vazgeçtim - veri aktarımı yaptım ( https://www.mql5.com/en/forum/382 ) ve hayatın tadını çıkardım

Geliştiriciler kendilerine çok mu yüksek hedefler belirliyor?

Ve her şey uzun zaman önce yapıldıysa (C, Delphi, ...) neden tekerleği yeniden icat edelim?

IMHO, MT5 sorunu başlangıcından itibaren başladı: bu ürünün neyi çözmek için tasarlandığına dair net bir vizyonun olmaması. Ya modernize edilmiş ve MT4 ürününe dayalıdır, ancak hız ve gelişmiş özellikler açısından yeni bir sürüme yükseltilmiştir ya da iyi düşünülmüş bir yapıya ve genişletilebilirliğe sahip (yani işletme sınıflarını içeren veya ticaret çerçevesi, açıkça tanımlanmış belirli görev sınıflarını yerine getirmek için ve genel işlevselliği ve yaygın olarak kullanılabilen yazılım destek araçlarıyla bazı modern programlama dili/ortamına dayalı). Bu ikilemi, karşıtları birleştirme girişimiyle çözmek, bir şekilde "en yetenekli solistleri doğaçlama" yöntemiyle bir tür komposto demlemek, görünüşe göre tamamen başarılı olmadı.

Bu, birine yapıcılığın gölgesi olmayan saf bir sel gibi görünüyorsa, o zaman ikinci kez sizi hamama götüreceğiz veya sizi tamamen vuracağız :)

 

2 pisara

köke bak

MQL, daha az programlama becerisine sahip tüccarlara yöneliktir. Aptallar için A la Basic.

Böyle bir pozisyona karşı değilim - bunun için de teşekkürler.

Ancak MQL5'i " analitik sistemlerin geliştirilmesi için tam teşekküllü ve kendi kendine yeten bir ortam. Öyle bir ortam ki üçüncü parti programların bile kullanılmasına gerek kalmayacak " olarak konumlandırmak ciddi bir iddiadır. Çekirdeği bir tür sindirilebilir çorba seti ile "bağlamak", bireysel meraklıların değil, iyi bir mimarın rehberliğinde tüm profesyonel programcılardan oluşan bir ekibin yıllarca çalışmasını gerektirecektir. Bütçe ve yönetim hakkında bir şey söyleyemem - bunlar zaten projenin farklı seviyeleri.

Şirketin çalışanlarını sıkı çalışmalarında desteklemek istiyorum. Çalışmaları için teşekkür etmek istiyorum. Ancak gerçekle yüzleşmeliyiz - MQL5, hedefe ulaşmada yalnızca bir aşamadır.

PS Moskova hemen inşa edilmedi

 
Evet, her birimizin ne kadar gereksiz yaptığımızı, yaptığımızı ve yapacağımızı düşünmek veya hatırlamak bile korkutucu!
 
Renat :

Çağrı hızını kontrol etmek çok basittir. Örneğin, kabaca şöyle hesaplayabilirsiniz:

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.

Varsayılan olarak etkin olan ve dll çağrıları için bu sarmalayıcıları ekleyen özel bir derleyici yönergesi yapmak güzel olurdu. Devre dışı durumda, bu sarmalayıcıları eklememek güzel olurdu. Hata ayıklama ve serbest bırakma modu gibi. Hepsi aynı, bazen 57K yeterli olmayacak. Aynı zaman dll zamanı tarafından tüketilir.
 
HideYourRichess :
Varsayılan olarak etkin olan ve dll çağrıları için bu sarmalayıcıları ekleyen özel bir derleyici yönergesi yapmak güzel olurdu. Devre dışı durumda, bu sarmalayıcıları eklememek güzel olurdu. Hata ayıklama ve serbest bırakma modu gibi. Hepsi aynı, bazen 57K yeterli olmayacak. Aynı zaman dll zamanı tarafından tüketilir.
Yapı 240'da sarmalayıcılar basitleştirildi, şimdi çağrı hızı saniyede 19.911.000 çağrı.
 
MQL / MQL2 / MQL4 / MQL5 tartışması hakkında: görünüşe göre tarihimizi iyi bilmiyorsunuz. En azından kurumsal web sitesine gidin, okuyun.


2001'den beri büyük bir tüccar topluluğu ile metodik olarak 4 nesil ticaret dili oluşturduk. Rakipler öldü, yönetim dilleri gelişmedi ama biz çalıştık, çalışıyoruz ve çalışmaya devam edeceğiz.

 

Renat :  

ve çalıştık, çalıştık ve çalışacağız.

Büyük Büyükbaba Lenin'in vasiyet ettiği gibi.

;)

Hatırlamıyorum, sanırım daha önce sormuştum...
Ve MKL5 kullanarak basit dll'ler oluşturmak mümkün olacak,
Basitçe söylemek gerekirse, editöre yazın ve derleyin ...?
Neden: