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.
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.
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
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).
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.
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ı?
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.
Gelen kenelere bağlı olmayan OnTimer() olay işleyicisini kullanarak!
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.
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.
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 ;)
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
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.