"Veri Değişimi Nasıl Yapılır? 10 Dakikada MQL5 için bir DLL" makalesi için tartışma - sayfa 2

 
LEHayes:

...

Bu konuyu gündeme getirmeniz iyi ve güzel, ancak hedefe nasıl ulaşılacağı konusunda çözüm ve hatta öneri sunmaya istekli değillerse, bu konuda şikayet etmenin kimseye bir faydası yok.

...

Aslında pfx'in bunu gündeme getirmesi ve şikayet etmesi iyi bir şey ve MetaQuotes bu sorunu çözmeli, çünkü MetaTrader'ı hepimizden daha iyi biliyorlar (bu arada, bu makalenin yazarı Renat Fatkhullin aynı zamanda MetaQuotes'un CEO'sudur). Birinin bunu gündeme getirmesi, onun soruna bir çözümü olduğu anlamına gelmez.

Ve.dll aslında her tikte çağrılırken "Seyrek çağrı yapmak daha iyidir" demenin mantıklı olmadığına katılıyorum.Ve bunu MetaQuotes CEO'sundan duymak güzel, dürüstlük bugünlerde bir değişiklik için iyidir.

pfx, alıntıladığınız paragrafı değiştirmişler gibi görünüyor ...

5. DLL çağrıları sarmalayıcı ve çağrılarda hız kaybı

Yukarıda açıklandığı gibi, DLL işlevlerinin her çağrısı, güvenliği sağlamak için özel bir sarmalayıcıya sarılır.

Bu bağlayıcı temel kodu maskeler, yığının yerini alır, stdcall / cdecl anlaşmalarını destekler ve çağrılan işlevler içindeki istisnaları izler.

Bu çalışma kaçınılmaz olarak çağıran fonksiyonun gecikmesine yol açar.

Bu nedenle, küçük işlemler için çok sık DLL işlev çağrıları (saniyede yüzlerce veya binlerce kez) yapılması önerilmez.

Seyrek çağrılar yapmak daha iyidir.

...buna ...

5. DLL çağrıları sarmalayıcı ve çağrılarda hız kaybı

Yukarıda açıklandığı gibi, DLL işlevlerinin her çağrısı, güvenliği sağlamak için özel bir sarmalayıcıya sarılır. Bu bağlayıcı temel kodu maskeler, yığının yerini alır, stdcall / cdecl anlaşmalarını destekler ve çağrılan işlevler içindeki istisnaları izler.

Bu iş hacmi, işlev çağrısında önemli bir gecikmeye yol açmaz.

Umarım bu .dll çağrı hızı sorununu gerçekten çözerler ve sadece soruları önlemek için makalenin bazı paragraflarını değiştirmezler.

Sorulardan bahsetmişken, umarım Renat Fatkhullin, pfx'in " Yani cidden bu nasıl bir ifade " sorusuna cevap vermek ister, çünkü Renat makalenin son satırında "İlginiz için teşekkür ederim! Her türlü soruyu yanıtlamaya hazırım" şeklinde bir ifade kullanmış olması ya da en azından paragrafın değiştirilmesi.

Biz de sizin cevabınızı duymak istiyoruz :).

Zamanım olduğunda bu konuda daha fazla yazacağım.

 

Renat bu makaleyi ne zaman yazdı bilmiyorum ama Microsoft artık Visual Studio 2005'i sunmuyor. Visual studio 2010 ve 2011 beta'yı sunuyorlar ve 2008'i terk etmek üzere gibi görünüyorlar.

Microsoft Visual Studio 2010 içinburaya tıklayın ve 2008 için buraya tıklayın. Yükleyici web yükleyicisidir, bu da yavaş internet bağlantınız varsa can sıkıcıdır. Çevrimdışı yükleyiciyi ISO görüntüsü olarak sunuyorlar ancak bu da Visual Studio C# ve Visual Basic içeriyor. Yükledikten sonra, her iki Studio da MB boyutunda büyük olan bazı güncellemeler gerektirir.

Visual Studio'yu yüklemekten hoşlanmayanlar için https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments adresine bakabileceğiniz başka alternatifler de var. Benim favorilerim NetBeans ve Code::Block. NetBeans Oracle tarafından destekleniyor ve Oracle Solaris Studio için temel oluşturuyor. Ancak NetBeans derleyici ile birlikte gelmiyor, bu yüzden yeni başlayanlar için can sıkıcı olabilecek Cygwin veya MinGW derleyicisini bulmanız gerekiyor. Ünlü DevC++'ın son kararlı sürümü 7 yıl önceydi, şimdi web sitesi ölü bağlantılarla dolu, artık kimse onlarla ilgilenmiyor gibi görünüyor, bu yüzden tavsiye etmeyeceğim.

Yine de Visual Studio kullanmak daha iyi, çünkü oynayabileceğiniz birçok seçenek var - nasıl yapılacağını biliyorsanız.

Download Overview
  • www.microsoft.com
Download free 90-day trials of Visual Studio products, free Visual Studio Express products, and additional Visual Studio software.
 
onewithzachy:

Sorulardan bahsetmişken, umarım Renat Fatkhullin, pfx'in " Yani cidden bu nasıl bir açıklama " sorusuna cevap vermek ister, çünkü Renat makalenin son satırında "İlginiz için teşekkür ederim! Her türlü soruyu yanıtlamaya hazırım" şeklinde bir ifade kullanması ya da en azından paragrafı değiştirmesi.
DLL çağrılarında yavaşlama yoktur.
 
Nasıl 64 bit DLL oluşturulacağını veya MQL5'in 32 bit DLL yüklemesine nasıl izin verileceğini bilen var mı? DLL'im "64 bit olmadığı" için MQ5 test komut dosyamı yüklemiyor. Teşekkürler.
 
Bu iyi teşekkürler
 

Çok iyi öğretici!

dosya referansı oluşturmam gerekiyor mu?

 

MT5'te işlevsel olmadığı için Fann2MQl.dll (http://fann2mql.wordpress.com adresinde belgelenmiştir) dosyasını değiştirmem gerekiyor. Bunun nedeni, MT5'te dosyaları istediğiniz yerde açamamanızdır. Varsayılan 2 yerde açılmaları gerekir (ileri mod ve test modu için).

Öyleyse soru, fopen yerine hangi işlevin çağrılacağı ve hangi başlık dosyasının dahil edileceğidir? Çünkü dosyaların MT5 içinden açılması gerekiyor gibi görünüyor. terminal.exe'yi atlayarak bir dosya açma girişimi (bir dll'den fopen kullanarak olduğu gibi), kullanılan terminal.exe başlatma moduna göre (simgeye tıklayarak veya /portable parametresiyle komut satırından) otomatik olarak Kurulum Dizinine veya Masaüstüne yönlendirilir.

Bu yönlendirme ayrıca tuhaftır, çünkü sonuçta dosyanın adı sadece ona giden yolun ilk satırındadır.

About
  • fann2mql.wordpress.com
Fann2MQL is a Neural Network processing package for MetaTrader4. It enables you to write your own Expert Adviser or Indicator taking advantage of Fast Artificial Neural Network Library. It’s very simple and efficient. You can use up to 1024 network simultaneously without recompiling it and in case you need more power it lets you perform...
 
RyanLeland:

Nasıl 64 bit DLL oluşturulacağını veya MQL5'in 32 bit DLL yüklemesine nasıl izin verileceğini bilen var mı? DLL'im "64 bit olmadığı" için MQ5 test komut dosyamı yüklemiyor. Teşekkürler.

Bu durum düzeltilebilir, talimatlar burada: Çözüm Gezgini -> Çözüme Sağ Tıklayın -> Yapılandırma Yöneticisi -> Etkin çözüm platformu açılır menüsü -> x64'ü seçin -> Kapat'a tıklayın -> Çözümü Yeniden Oluşturun

Umarım bu yardımcı olur.

İyi şanslar.

 

Merhaba,

Bu, Microsoft Visual Studio 2013 Express sürümü tarafından üretilen DLL ile çalışmaz, eke bakın.

MSVCR120D_APP.DLL kütüphanesini bulamıyor gibi görünüyor ve KERNEL_32 ile ilgili bir sorun da var.

Benzer bir sorun yaşayan var mı? Bunu nasıl aşabilirim, lütfen?

Teşekkür ederim

 

mql5, geri arama işlevleri içeren içe aktarma dll'lerini destekliyor mu?

Örneğin:

Aşağıdaki fonksiyonu içeren tclient.dll adında bir dll var:

typedef TCLIENT_API void(*call_back)(Tick* p);

TCLIENT_API int sub_tick(CTX ctx, const char* insId, call_back f);

O zaman mql5'te sub_tick'i nasıl bildirmeli ve çağırmalıyım?

#import "tclient.dll"

//"sub_tick" işlevi nasıl bildirilir

#import

void ontick(Tick &ticks[])

{}

int OnInit()

{

//"sub_tick" işlevi nasıl çağrılır?

}