mql4/5'in çoklu iş parçacığı olasılığından yoksun olduğu gerçeğini hesaba katarsak, mql4/5 üzerinde bir sunucu yapmak tüplü bir TV izlemek gibidir (çalışıyor gibi görünüyor, ancak duygu aynı değil. Bu yüzden ayrı bir sunucu yazmak ve mql programları arasında veri aktarmak için kullanmak daha iyidir.
Ayrıca writeTick, readTick... ve benzeri yöntemleri çağırırken erişim ihlali hatalarıyla karşılaştım. Düzeltilmiş CNamedPipes dosyasını ekte bulabilirsiniz.
Ayrıca CNamedPipe SınıfınaWriteDouble Metodunu da ekledim :
#import "kernel32.dll"
...
int WriteFile(ulong fileHandle,double &var,int bytes,int &numOfBytes,ulong overlapped);
...
#import
...
bool CNamedPipe::WriteDouble(double data)
{
int data_size = sizeof(data);
//--- parametreleri kontrol etif(!data || data_size<1) return(false);
//--- veri gönderint written;
if(!WriteFile(hPipe,data,data_size,written,NULL) || written!=data_size)
return(false);
//--- tamamreturn(true);
}
Yan Not: İstemci Tarafında (örneğin başka bir Metatrader Terminalinden) okumak/yazmak için sadece standart MQL5 FilePipe Kütüphanesini kullandım. Bunların nasıl kullanılacağına dair örnekleri buradan indirebilirsiniz:
Many developers face the same problem - how to get to the trading terminal sandbox without using unsafe DLLs. One of the easiest and safest method is to use standard Named Pipes that work as normal file operations. They allow you to organize interprocessor client-server communication between programs. Take a look at practical examples in C++ and MQL5 that include server, client, data exchange between them and performance benchmark.
Burada bir güncelleme yapılmayalı uzun zaman oldu... Göstergeyi grafiğe eklediğimde "Erişim İhlali" hatası görüyorum. Sanırım bunu çalıştırmanın bir yolu yok.
Ayrıca writeTick, readTick... ve benzeri yöntemleri çağırırken erişim ihlali hatalarıyla karşılaştım. Düzeltilmiş CNamedPipes dosyasını ekte bulabilirsiniz.
Ayrıca CNamedPipe SınıfınaWriteDouble Metodunu da ekledim :
Yan Not: İstemci Tarafında (örneğin başka bir Metatrader Terminalinden) okumak/yazmak için sadece standart MQL5 FilePipe Kütüphanesini kullandım. Bunların nasıl kullanılacağına dair örnekleri buradan indirebilirsiniz:
https://www.mql5.com/tr/articles/503