"DLL'leri Kullanmadan Adlandırılmış Kanalları Kullanarak MetaTrader 5 ile İletişim Kurma" makalesi için tartışma - sayfa 6

 
Igor Semyonov:

Benim şöyle bir sorum var:

Makale şöyle diyor:

İki kez kontrol ederek sunucuya bağlanın: 'RemoteServerName' adlı uzak bilgisayara veya yerel bilgisayara. Yerel bilgisayarda her şey çalışıyor ve hiçbir soru yok.

Ancak PipeServer.exe'yi uzak bir VPS'de çalıştırırsanız ve ardından istemci betiğini başka bir bilgisayardaki grafiğe atarsanız, RemoteServerName 'i VPS'ye ait adladeğiştirdikten sonra, sunucu ve istemci birbirini görmez, yani kanal çalışmaz, bağlantı yoktur.

Buradaki sorun nedir, belirli bir VPS'nin adının başlangıçta PipeServer.exe'de mi yazılması gerekiyor?

çözümü duymak ilginç olurdu,

eğer geliştiriciler bunu uzak bir bilgisayar için kullanma olasılığını belirtmişlerse, muhtemelen çalışmalıdır.

Umarım buradaki geliştiriciler bunun uzak bir bilgisayarda nasıl gerçekleştirileceğine dair bir örnekle yardımcı olabilirler.

 

Bu istemciyi kullanan var mı? Ne için ve nasıl?

Başlangıçta okudum:

"Terminalden bir betik bu sunucuya bağlanacak ve onunla veri alışverişinde bulunacaktır."

İki farklı terminalde çalışan iki istemciyi bu sunucu üzerinden nasıl bağlayabileceğimi sorabilir miyim? Anladığım kadarıyla sunucu ve testler sadece bir istemci sunucuya bağlanıyor ve bu sunucu aldığı mesajlarla ne yapabilir?

Bunun için

1) birden fazla istemciyi bekleyen bağımsız bir sunucu,

2) her istemcinin kendine özgü bir ID göndererek bağlantıyı başlatması,

3) sunucunun aldığı herhangi bir mesajı bağlı her istemciye gönderen bir sunucu - mesajı aldığı istemci hariç olabilir,

4) Her mesajı, mesajı gönderen istemcinin benzersiz ID'si ile başlayan bir sunucu mu gönderiyor?

- Bu şekilde istemci kendi mesajlarını tespit edebilir ve sunucu tarafından herhangi bir nedenle geri gönderilmişlerse silebilir.

- Bu şekilde istemci dinlemesi gereken istemci(ler)i de tespit edebilir - istemcinin mq4 kodunun bir parçası olmalıdır.

 
Özür dilerim - çeviriyi Google'da arattım.
Meseleyi hiç anlamıyorum! Başka bir istemcide oradan aldığım verilerle sunucu ne yapıyor?
Burada rasyonel bir çözüm öngördüm: İngilizce tartışmaya bağlantı. Muhtemelen birisi İngilizce bir cevap yazabilir?
Çok teşekkürler, Calli
 

Burada sunulan çözüm Async Named Pipes ile çalışmaz. Lütfen https://www.mql5.com/en/forum/94343 adresine bakınız.

Newgel

MQL5 Asynchronous named pipes?
MQL5 Asynchronous named pipes?
  • www.mql5.com
I´m trying to integrate MT5 with an external Named Pipe Server application written in C# through named pipes...
 

İyi günler MetaQuotes.

WaitNamedPipe() fonksiyonunun bir benzerini WinAPI'den MQL4/5'e ekleme planınız olup olmadığını söyleyebilir misiniz?

Böyle bir fonksiyon, sunucunun kanalın bir örneğini açmasını beklerken MQL istemcilerinin sonsuz bir döngü içinde FileOpen() aracılığıyla kanalı sorgulama ihtiyacını ortadan kaldıracaktır. Bu özellikle bekleme süresi uzun olduğunda kullanışlıdır.

 
codesurfer:

İyi günler MetaQuotes.

WaitNamedPipe() fonksiyonunun bir benzerini WinAPI'den MQL4/5'e ekleme planınız olup olmadığını söyleyebilir misiniz?

Böyle bir fonksiyon, sunucunun kanalın bir örneğini açmasını beklerken MQL istemcilerinin sonsuz bir döngü içinde FileOpen() aracılığıyla kanalı sorgulama ihtiyacını ortadan kaldıracaktır. Bu özellikle bekleme süresi uzun olduğunda kullanışlıdır.



Bu tür soruları en iyi şekilde profiliniz aracılığıyla Hizmet Masasında sorabilirsiniz.
 

Merhaba.

PipeServer.exe'yi başlatıyorum, pipeclient.mq5 betiğini hata ayıklama modunda çalıştırıyorum. Komut dosyası burada döngüye giriyor:

//--- boru sunucusunu bekleyin
   while(!IsStopped())
     {
      if(ExtPipe.Open("\\\\REN\\pipe\\MQL5.Pipe.Server",FILE_READ|FILE_WRITE|FILE_BIN)!=INVALID_HANDLE) break;
      if(ExtPipe.Open("\\\\.\\pipe\\MQL5.Pipe.Server",FILE_READ|FILE_WRITE|FILE_BIN)!=INVALID_HANDLE) break;
      Sleep(250);
     }

Neyi yanlış yapıyorum?

Sistem: Windows 7 Ultimate (x64 tabanlı PC), IE 11.00, RDP, UAC, AMD FX-8300 Sekiz Çekirdekli İşlemci , RAM: 5601 / 8190 Mb, HDD: 14763 / 114370 Mb, GMT+02:00
Terminal: MetaTrader 5 x64 build 1643 başlatıldı (MetaQuotes Software Corp.).

Not: PipeServer'ı Yönetici olarak çalıştırıyorum.

 

MQL5+python test bağlayıcısını başlatmak için kim yardımcı olabilir? İşçilik maliyetlerini karşılamaya hazırım.

Bir Python betiğinden fonksiyon çağrılarını uygulamak için çalışan bir örneğe ihtiyacım var.

MQL5'te bir Python betiği ile etkileşime giren bir işlev yapmaya çalışıyorum, ancak bir dosya aracılığıyla değil. Hızlı bir argüman alışverişine ihtiyacım var.

Herhangi bir örnek için minnettar olurum, örneğin MT'den bazı sayıları iletmek ve Python betiği örneğin sayıların toplamını MT'ye geri döndürür.


 
mavar:

MQL5+python test bağlayıcısını başlatmak için kim yardımcı olabilir? İşçilik maliyetlerini telafi etmeye hazır.

Bir Python betiğinden fonksiyon çağrılarını uygulamak için çalışan bir örneğe ihtiyacım var.

MQL5'te bir Python betiği ile etkileşime giren bir işlev yapmaya çalışıyorum, ancak bir dosya aracılığıyla değil. Hızlı bir fikir alışverişine ihtiyacım var.

Herhangi bir örnek için minnettar olurum, örneğin MT'den bazı sayıları iletmek ve Python betiği örneğin sayıların toplamını MT'ye geri döndürür.


Sunucuyu C#'ta uyguladım, her şeyin yolunda olduğunu düşünüyorum. Python'da daha zor olmadığını düşünüyorum.

 

Kütüphaneye sunucu bağlantısının açık olup olmadığını kontrol eden bir fonksiyon ekleme planınız var mı? Anladığım kadarıyla şu anda böyle bir fonksiyon yok.

Sunucu ile bağlantı kesilse bile Handle sıfır olmayan bir değeri korur.