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

 
Reshetov:
................

Bir yandan dll'den kurtulduk, ancak diğer yandan uygulama için yine diğer programlama dillerinde koltuk değneklerine ihtiyaç duyuluyor.

Önerilen yöntemin dezavantajı ise sadece MQL dışındaki dillerde uygulama geliştiren programcılar için uygun olmasıdır. ...................

MQL5'te papağan da çizebilirsiniz. İşte kodları içeren bir makale.
 
MetaDriver:
MQL5'te bir papağan da çizebilirsiniz. İşte статья, с кодами.

En azından ilgi çekmek için bu konunun başlığını okumalısınız

Artık öyle değil. Bkz . https://www.mql5.com/ru/forum/7806/page3.

Renat:
Bunun istemci desteği olduğunu ve sunucu bağlantılarının terminalde oluşturulamayacağını unutmayın.
Использование MQL5 для торговли на МТ4
Использование MQL5 для торговли на МТ4
  • www.mql5.com
Подскажите, можно ли каким-нибудь образом извернуться, чтобы с помощью программ на MQL5 торговать у брокера, поддерживающего МТ4?
 
Reshetov:

Artık öyle değil. https://www.mql5.com/ru/forum/7806/page3 adresini gör.

Sessizce yapacağım. Kimseye söyleme. Shhhh.....
 
MetaDriver:
Dikkat çekmemeye çalışacağım. Kimseye söyleme. Shhhh.....

Oh, sen. Geliştiriciler çok çalıştılar, müşteri bağlantıları kurdular, makaleyi yazdılar.

Ve sen ne yaptın? Her şeyden vazgeçmek, C öğrenmek ve tüm bu şeyleri açık ve dürüst bir şekilde kullanmak yerine, sessizce ve derin yeraltında dll'ler aracılığıyla konektörleri kovalıyorsunuz.

Onu ne kadar beslerseniz besleyin (parmakla göstermeyelim), yine de terminalde dll kullanmak istiyor.


Normal kahramanlar her zaman dolambaçlı yollara saparlar © N. Korostylev

 
Reshetov:

Yukarıda belirtilen makaledeki örneklere dayanarak ağ geçidinizi MQL5'te yazın. Ve istemci komut dosyalarını saf MQL'de yazabilirsiniz.

Gerçi neden böyle tek taraflı bir çözüm yaptığınızı anlamış değilim. Kendi sunucusunu C ile yazacak olanlar dll bağlamak sorun değil ama mevcut işlevselliğin geri kalanı yeterli olmayacaktır. Tabi dll işi çok yavaşlatmıyorsa (ki bundan şüpheliyim).

 
Lütfen makalenin konusuna ve özüne dikkat edin.

DLL kullanmadan terminalden üçüncü taraf sistemlere bağlanabilmekle ilgilidir. Görev tamamlandı - artık bağlanmanın ve tam çift yönlü veri alışverişinin kolay bir yolu var.

Şimdi üçüncü taraf bir uygulama yazmanın gerekli olduğu yönündeki şikayet yersizdir.
 
Renat:
Lütfen konuya ve makalenin özüne dikkat edin.

DLL'leri kullanmadan terminalden üçüncü parti sistemlere bağlanabilmekle ilgilidir. Görev tamamlandı - artık bağlanmanın ve tam çift yönlü veri alışverişinin kolay bir yolu var.

Üçüncü parti bir uygulama yazmak zorunda olduğunuz şikayeti yersizdir.
Renat, MT4'te ne zaman boru yapmayı planlıyorsun?
 
Renat:
Lütfen konuya ve makalenin özüne dikkat edin.

DLL'leri kullanmadan terminalden üçüncü parti sistemlere bağlanabilmekle ilgilidir. Görev tamamlandı - artık bağlanmanın ve tam çift yönlü veri alışverişinin kolay bir yolu var.

Üçüncü parti bir uygulama yazmak zorunda olduğunuz şikayeti yersizdir.

Aslında bu doğrudur, çünkü standart yöntemlerle, yani üçüncü taraf koltuk değnekleri olmadan, örneğin MQL uygulamaları arasında iletişim sağlanacağı beyan edilmemiştir.

"Birçok geliştirici aynı sorunla karşı karşıyadır - güvenli olmayan DLL'ler kullanmadan ticaret terminalinin sanal alanına nasıl girilir."

Burada herhangi bir iddia yok ve olmamalı da.

Ancak diğer yandan, uygulama planında en çok talep edilen MQL ile yazılmış uygulamalar arasında iletişim sağlama görevi, bu makaledeki örnekler üzerinde güvenli olmayan dll'ler kullanılarak çok etkili bir şekilde çözülmüştür. Çünkü bu makalede, string mesajlar aracılığıyla iletişimi uygulamak için sadece MQL5'te programlama bilgi ve deneyimine sahip olmak yeterlidir (işin geri kalanını, yani Windows API aracılığıyla üçüncü taraf koltuk değneklerini, makalenin yazarı zaten yapmış ve hazır bir sınıf olarak yayınlamıştır).

 
Terminaller arasındaki iletişim sorununun küçük bir uygulama payına sahip olduğunu düşünüyorum.

Ancak harici sistemlerle iletişim daha önemli ve uygulanabilirdir. Güvenli kanal bunun için açıldı.

Ve tüm uygulamanın standart dosya işlemleri çerçevesinde olduğunu unutmayın. Yeni bir fonksiyon eklenmesine gerek yoktu.
 
komposter:

Yukarıdaki makaledeki örneklere dayanarak MQL5'te kendi ağ geçidinizi yazın.

Teorik olarak yapabilirsiniz, ancak pratikte bu bir koltuk değneği ve hatta simpleks olacaktır.

En az maliyetle ağ geçitlerinin nasıl yapılacağına dair bazı bilgiler buldum. C++'ın NamedPipeServerStream(String) adında bir akış sınıfına sahip olduğu ortaya çıktı.

Bunu çağırırsanız, adlandırılmış bir kanal oluşturacaktır. Daha sonra IsConnected yöntemini çağırarak bir bağlantı bekleyebilir ve ikinci bir adlandırılmış kanal oluşturabiliriz. Başka bir istemcinin ikinci kanala bağlanmasını bekleriz ve CopyToAsync(Stream) yöntemini kullanarak ilk akıştaki bilgileri ikincisine yönlendiririz. Bundan sonra bir alt süreç başlatmamız ve yine CopyToAsync(Stream) kullanarak ikinci akıştaki bilgileri birinciye yönlendirmemiz gerekir. Bu şekilde her iki adlandırılmış kanal da çift yönlü olarak bağlanacaktır.

Kolay görünüyor, ancak C++ ile hiç deneyimim yok. Eğer Java olsaydı, hata ayıklama ile yarım saat sürerdi.

Şimdiye kadar yeniden tasarlamak için uygun bir örnek buldum: http://msdn.microsoft.com/en-us/library/bb546085.aspx. Boş zamanlarımda buna dayanarak tam çift yönlü bir ağ geçidi oluşturmaya çalışacağım. Ya çalışırsa?

NamedPipeServerStream Constructor (String) (System.IO.Pipes)
NamedPipeServerStream Constructor (String) (System.IO.Pipes)
  • msdn.microsoft.com
Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)