IP üzerinden Java'dan MT4'e sipariş gönder

 

Merhaba,

IP aracılığıyla başka bir bilgisayardan (bir Java uygulaması çalıştıran) MT4'e basit siparişler (sadece AL, SAT, KAPAT) göndermenin herhangi bir yolu var mı?

Çift yönlü iletişime gerek yok; sadece tek yönlü.

Şimdiden teşekkürler.

 
Mariop : Başka bir bilgisayardan (Java uygulaması çalıştıran) MT4'e IP yoluyla basit emirler (sadece AL, SAT, KAPAT) göndermenin herhangi bir yolu var mı? Çift yönlü iletişime gerek yok; sadece tek yönlü.

Evet, ancak süreçler arası iletişim için bir arabirimin kodlanması gerekir, çünkü bu yerleşik olarak mevcut bir şey değildir. Bilgi ve deneyim gerektiren ve sizin gibi yeni başlayan birinin çok kolay üstesinden gelemeyeceği kodlama.

Bu yüzden Serbest Çalışma bölümüne gidin ve bunu sizin için yapacak kalifiye birini işe alın, ancak bunun ucuz olacağından şüpheliyim.

 
:) Cevabınız için teşekkür ederim.
Yine de o kadar acemi olmadığımı düşünüyorum, aslında C# ile yıllar önce TradePlatform.NET üzerinden daha karmaşık şeyler yapmıştım ama bu sefer onları (siparişleri) bir Java programından göndermem gerekiyor. Yani MT4'ün benim istediğim şekilde sipariş alabilmesinin bir yolu varsa, hala daha ilginç cevaplar bekliyorum.
 

Sana en uygun cevabı zaten verdim! İletişim yöntemi olarak hizmet etmesi için her zaman ağdaki dosyaları kullanabilirsiniz, ancak bu yavaş ve zahmetli olacaktır.

Bu soruyu sormuş olmanız, MetaTrader/MQL programlama ortamına göre MQL/MetaTrader'da nispeten daha az yetkin olduğunuzu söylüyor. Bunu söylüyorum çünkü MQL ve WinAPI'de çok yetkin olsaydınız, kanallar, adlandırılmış kanallar , TCP/IP vb. yoluyla çeşitli IPC çözümlerini zaten biliyor olurdunuz - bunların çoğu DLL kitaplıkları aracılığıyla uygulanır, ancak zorunlu olarak böyle değildir. .

 
MT4'ü Java'dan bağlamanın en kolay (kolay olmasa da) yolu soketlerle olacaktır, kod tabanında ve makalelerde MQL için örnek kodlar vardır.
 
Ovo :
MT4'ü Java'dan bağlamanın en kolay (kolay olmasa da) yolu soketlerle olacaktır, kod tabanında ve makalelerde MQL için örnek kodlar vardır.

Neredeyse hiç Java deneyimim yok, ancak iki bilgisayar aynı yerel ağdaysa, o zaman FileOpen() aracılığıyla MQL4 tarafından desteklenen adlandırılmış kanallar mümkün ve daha basit olabilir.

http://stackoverflow.com/questions/634564/how-to-open-a-windows-named-pipe-from-java

 
jjc :

Neredeyse hiç Java deneyimim yok, ancak iki bilgisayar aynı yerel ağdaysa, o zaman FileOpen() aracılığıyla MQL4 tarafından desteklenen adlandırılmış kanallar mümkün ve daha basit olabilir.

http://stackoverflow.com/questions/634564/how-to-open-a-windows-named-pipe-from-java

Aslında Java'da adlandırılmış yöneltmelerle ilgili deneyimim yok, ancak yuvalar Java'da çok yaygın. Üstelik, sağladığınız bağlantı, Java'dan adlandırılmış kanal oluşturamazsınız, ancak yalnızca mevcut olana bağlanmak için görünüyor ve ağ çözümü yerine yalnızca süreçler arası bağlantıyı düşündüler (uyumlu olabilir veya olmayabilir, hiçbir fikrim yok).

 
jjc :

Neredeyse hiç Java deneyimim yok, ancak iki bilgisayar aynı yerel ağdaysa, o zaman FileOpen() aracılığıyla MQL4 tarafından desteklenen adlandırılmış kanallar mümkün ve daha basit olabilir.

http://stackoverflow.com/questions/634564/how-to-open-a-windows-named-pipe-from-java


Başlangıçta her iki bilgisayar da aynı LAN üzerinde olacak, ancak internet üzerinden de çalışmasını sağlamak ilginç olacaktır. Ama evet, aynı LAN üzerinde şu anda yeterli olacaktır.


yumurta :
MT4'ü Java'dan bağlamanın en kolay (kolay olmasa da) yolu soketlerle olacaktır, kod tabanında ve makalelerde MQL için örnek kodlar vardır.


Evet. Orada bulduğum en iyi çözüm, mt4-zeromq kullanan çözüm gibi görünüyor, ancak yine de bir ticaret gerçekleştirmek için nasıl kullanılacağını gösteren bir örnek bulamıyorum. Sanırım bunu yapmanın en iyi yolu bu olabilir, çünkü (¿)gecikmesi(?) olmayacağı ve Linux ortamında kullanılabileceği için, bununla ilgili herhangi bir basit örnek kod takdir edilecektir.

Ancak yine de gördüğüm asıl sorun gecikme: Buna benzer ama ters yönde bir şey geliştirdiğimde (MT4 harici bir sunucuyla etkileşim halindeydi) MT4 piyasa keneleri arasında yeni bir bilgi olmadığı için böyle bir sorun yoktu. bu durumda, MT4'ün keneler arasında nasıl emir alabileceğini (ve uygulayacağını) anlayamıyorum. Sorun olmaz mı? Ya da belki bir şeyi özlüyorum ve bu bir sorun olmayacak mı?

 
Ovo :

Aslında Java'da adlandırılmış yöneltmelerle ilgili deneyimim yok, ancak yuvalar Java'da çok yaygın. Üstelik, sağladığınız bağlantı, Java'dan adlandırılmış kanal oluşturamazsınız, ancak yalnızca mevcut olana bağlanmak için görünüyor ve ağ çözümü yerine yalnızca süreçler arası bağlantıyı düşündüler (uyumlu olabilir veya olmayabilir, hiçbir fikrim yok).

"Adlandırılmış Kanallar", WinAPI işlevleri çağrılarak önce MT4 ucu tarafından oluşturulmalıdır. Ancak o zaman JAVA tarafından standart bir dosya olarak kullanılabilir. Bu bir problem olmamalı, çünkü OP'nin tam olarak istediği şey bu ama sadece bir LAN çözümü için ideal.

Soketler ise hem LAN hem de WAN çözümleri için idealdir, ancak MT4'ün işleri daha kolay halletmesini sağlamak için WinAPI için ekstra destek işlevlerine sahip bir DLL sarmalayıcı gerektirecektir.

Bununla birlikte, OP'nin olası çözümler hakkında bol miktarda bilgi olduğu için "parmaklarının yürümesine izin vermesi" gerekir. Adlandırılmış Pipler, Eşlenmiş Dosyalar, Yuvalar veya her neyse, kendisine en uygun yöntemi seçmesi gerekiyor:
 
Mariop : Ancak hala gördüğüm asıl sorun gecikme: Benzer bir şey geliştirdiğimde ancak ters yönde (MT4 harici bir sunucuyla etkileşime giriyordu) MT4 pazar keneleri arasında yeni bir bilgi olmadığı için böyle bir sorun yoktu, ancak bu durumda MT4'ün tikler arasında nasıl emir alabileceğini (ve uygulayacağını) anlayamıyorum. Sorun olmaz mı? Ya da belki bir şeyi özlüyorum ve bu bir sorun olmayacak mı?

Gelen kenelere bağlı olmayan OnTimer() olay işleyicisini kullanarak!

Mariop : Orada bulduğum en iyi çözüm mt4-zeromq kullanan çözüm gibi görünüyor, ancak yine de bunun bir ticaret yapmak için nasıl kullanılacağını gösteren bir örnek bulamıyorum.

3. parti kitaplıklara bağımlı olmamaya çalışın. MT4 için işleri kolaylaştırmak için kendi DLL'nizi ekstra destek işlevleriyle kodlayın. DLL'yi C# ile değil, bağımlılıkları olduğu ve C kadar verimli olmadığı için C ile kodlayın.

Ayrıca gereksinimlere uygun kendi mesaj formatınızı/protokolünüzü tasarlayın. Kompakt ve verimli hale getirin ve daha sonra gerekirse güvenlik için şifrelemeniz gerekir.

 
FMIC :

3. parti kitaplıklara bağımlı olmamaya çalışın. MT4 için işleri kolaylaştırmak için kendi DLL'nizi ekstra destek işlevleriyle kodlayın. Bağımlılıkları olduğu ve C kadar verimli olmadığı için DLL'yi C# ile değil C ile kodlayın.

Ayrıca gereksinimlere uygun kendi mesaj formatınızı/protokolünüzü tasarlayın. Kompakt ve verimli hale getirin ve daha sonra gerekirse güvenlik için şifrelemeniz gerekir.

Şimdi ilkinden çok daha ilginç bir cevabımız var. Size kesinlikle katılıyorum ve bunlar gerçekten İYİ TAVSİYELER. MQL'yi yıllar önce kendi platformumu geliştirdiğimden beri bıraktım (Başka hiçbir platformda bulamadığım bazı özel özelliklere GERÇEKTEN ihtiyacım vardı, bunun nedeni, bunu yapmak için çok fazla zaman harcama havasında olmam değildi). Şimdi yalnızca MT4 ile çalışan bir komisyoncu ile işbirliği yapmaya başlayacağım, bu yüzden ona bağlanmak için bir köprü inşa etmem gerekiyor. Bu yüzden bir an önce çalışmasını sağlamak için acelem var.


FMIC :

Gelen tiklere bağlı olmayan OnTimer() olay işleyicisini kullanarak!


Doğru. Teşekkürler. Bunu hatırlamadım. Aslında bu sorunu tamamen çözmüyor çünkü emirlerin neredeyse anında yerine getirilmesine ihtiyacım var (ve sanırım bu yöntemle sadece her saniyede bir kontrol edebilirim, ama en azından her tikte değil), ama gerçekten de kolayca geçici bir çözüm oluşturabilirim. onu kullanmak.

Yine güzel tavsiyeler ;)

Neden: