Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Kontrol edilebilir, sadece kontrolü sonsuz bir döngüde çalıştırın. bir bağlantı kesintisi sırasında terminali başlatırken bu döngünün nasıl başlatılacağı tamamen ayrı bir sorundur. Döngünüzü çalıştırdığınızda, bekleneni yapacaktır.
Sorununuzun IsConnected() işleviyle hiçbir ilgisi yok. Aynı argümanla, Print() veya Alert() veya tamamen farklı bir nedenden dolayı tüm kodu ilk etapta başlatamadığınız için çağıramayacağınız diğer işlevler hakkında da şikayet edebilirsiniz.
tamam, bir şey açıklayayım çünkü çok fazla terminlas kullanıyorum cpu kullanımım yüzde 100'e kadar çıkıyor bu yüzden birkaç terminali kapatmam gerekiyor
Ve onları açtığımda (tabii ki otomatik) birkaç kez bağlı olmadıklarını ve EA'nın üzerlerinde çalıştığını gördüm, bağlantı olmadığını bildirmedi,
bu konuyu sen başlattın ve şimdiye kadar bulduğum tek yol yukarıda söylediğim gibi harici bir program
Belki de, Windows XP SP2 ile ilk kez tanıtılan "özellik" ile, herhangi bir zamanda yalnızca bir avuçtan fazla yarı açık bağlantıya sahip olmayı reddetmesi, özellikle ağ yoğun uygulamaları kullanmak isteyen insanları rahatsız etmekle ilgilidir. AFAIK, bu can sıkıcı "özelliği" ortadan kaldırmak ve normal çalışabilirliği geri yüklemek için yöntemler var: http://blog.davidkaspar.com/archives/2005/04/windows-xp-sp2-and-event-id-4226.php
Windows olay günlüğünde 4226 olayını arayın.
Bir EA'da init() içinden bir start() öğesini zorlamanın tek doğru yolu budur . GUI iş parçacığında start() çalışacağından bunu bir göstergede yapmanıza izin verilmez.
Bu güzel ama her zaman işe yaramaz çünkü kene initi() geri dönmeden önce bile gitmiş olabilir, bu durumda kene atılır. Bunu vurgulamak için, sonra 5 ms'lik bir duraklama eklerseniz
sonra start() yürütülmez.
Aracıdan gerçek bir onay işareti gerektirmeden uzman danışmanın yükünde start() yürütmek için daha iyi bir çözüm var mı?
Biraz yaşlıyım ama bu konuda aldığım aynı soruna bir çözüm arıyorum.
Aslında, qjol'ün "bunu yapmanın tek yolu bir komut dosyası kullanmaktır; sorun şu ki terminali Yüklenen bir komut dosyasıyla açmanın bir yolu yoktur" iddiası kısmen doğrudur. Bir komut dosyası ile tamam, ancak istemci terminali ile bir komut dosyası başlatmanın bir yolu var. Bu, metatrader yardımında (F1, Araçlar, Başlangıçta Yapılandırma) belgelenmiştir. Bu konunun açıldığı tarihte aynı olmayabilir.
Bu yüzden işi yapmak için küçük bir senaryo geliştirdim. Bunu bir başlangıç komut dosyasıyla kullanın, örneğin:
Ve terminale şunun gibi bir şeyle lauch:
"...\Metatrader 4\terminal.exe" config\start.ini
Merhaba millet,
Herhangi birinizi tanıyor musunuz , neden script sahte keneler çalışmıyor - https://www.mql5.com/en/forum/128803/page2#373539 (sayfa 2) 600++ derlemesi için bu konu?
İşletim sistemim Vista. Teşekkür ederim.
Merhaba millet,
Herhangi birinizi tanıyor musunuz , neden script sahte keneler çalışmıyor - https://www.mql5.com/en/forum/128803/page2#373539 (sayfa 2) 600++ derlemesi için bu konu?
İşletim sistemim Vista. Teşekkür ederim.
600'den büyük olduğundan, ansi için "A" yı unicode için "W" ile değiştirmeniz gerekir.
neden parametrede 2 ve 1 kullanıyor?
neden parametrede 2 ve 1 kullanıyor?
MQL kapsamı dışındadır, işlevi buradan işaretleyin:
Başka birinin IsConnected() işleviyle ilgili bilgi araması durumunda.
Yani evet, işlev start() işlevi veya OnTick() işlevi altında çalışmayacaktır, çünkü bağlantı yoksa yeni bir onay işareti gelmez ve işlev yine de tetiklenmez....
Yani ne yapmalıyız?
Gelen onay işaretlerinden bağımsız olarak bağlantıyı düzenli olarak kontrol etmek için OnTimer() işlevini kullanın.
fridayda13 :
Yani evet, işlev start() işlevi veya OnTick() işlevi altında çalışmayacaktır, çünkü bağlantı yoksa yeni bir onay işareti gelmez ve işlev yine de tetiklenmez....
Yani ne yapmalıyız?
Gelen onay işaretlerinden bağımsız olarak bağlantıyı düzenli olarak kontrol etmek için OnTimer() işlevini kullanın.
Hiçbir şey yapmamalısın çünkü yapabileceğin hiçbir şey yok. Ağın zaman aşımına uğraması ve işlevin değeri değiştirmesi 30+ saniye sürer. Hiçbir şey değişmediğinde ve bağlantınız olmadığında ne yapacaksınız?
Yalnızca başlangıçtan/OnTick'ten (bir OrderSend'den önce kontrol edin.) veya aynı tik içinde yeniden denemeler için OrderSend'den sonra geri dönmezseniz yararlıdır.
Bunun yerine, OrderSend başarısız olursa, oturum açın, geri dönün ve bir sonraki onay işaretinde test edin/tekrar deneyin. Tamamlandı.