MQL'de asenkron ve çok iş parçacıklı programlama - sayfa 25
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Konuyu yeniden okumaya başladı ve Igor zaten bunun hakkında yazdı.
Yur'un söylemeye çalıştığım şey buydu, bellek ayırmanız ve akışı kaydetmeniz gerekiyor.
İgor, tahsis ve kayıt yaptırmanız gerektiğini yazıyor, hiçbir şey yapmanıza gerek yok yazıyor.
İşte burada başım dönüyor. Sonunda bir çıkmaz..
Igor kulede özel bir şekilde çalıştı ve bu konuda kendi kendine öğrettiğimizden daha fazlasını anlamalı.
Başlangıçta, bellek ayırmak ve başlatmak için gerekli olan aynı şeye meyilliydim.
Bu hala farklı C derslerinden, hafızamda başlatma ve bellek tahsisi ertelendi , bu doğru kodlamanın anahtarı, çünkü bu akmayacak ve çöp olmayacaktı.
Igor'a bu soruda, lütfen bunun C ++ ile nasıl yapıldığını açıklayın.
Sadece kelimelerle değil, bir örnekle, kelimeler nifiga anlamaz))
Konuyu yeniden okumaya başladı ve Igor zaten bunun hakkında yazdı.
Yur'un söylemeye çalıştığım şey buydu, bellek ayırmanız ve akışı kaydetmeniz gerekiyor.
Konuyu yeniden okumaya başladı ve Igor zaten bunun hakkında yazdı.
Başlangıçta, bellek ayırmak ve başlatmak için gerekli olan aynı şeye meyilliydim.
Bu hala belleğimdeki farklı C derslerinden, başlatma ve bellek ayırma , bu doğru kodlamanın anahtarıdır, çünkü bu akmaz ve çöp olmaz.
Igor'a bu soruda, lütfen bunun C ++ ile nasıl yapıldığını açıklayın.
Bu konuyu ustaca tartışmanın en üstüne itiyorsunuz, giderek daha fazla tartışma katılımcısını probleminize çekmeye çalışıyorsunuz)))
Yazışmayı bağlamdan çıkarmayın:
- Bunu WinAPI'nin nasıl çalıştığını anlamak istiyorsanız dll yazmak için hazır örnekler kullanabilirsiniz bağlamında yazdım = bu kaynakta 20'den fazla makale
- Bunu, sistem programcılarının size yazmış olduğu içerme dosyalarını değiştirerek saf WinAPI çağrılarına ulaşabileceğiniz bağlamında yazdım.
....
yazışmanın özü: yazmaya ve yazmaya değil, okumaya ve bir şeyler yapmaya başlayın... proje türü, kodunuzu eklediniz, derlendi = sonucu aldı - yüzlerce veya binlerce sistem programcısı sizin için tüm işi yaptı. Şablonlarda ve dahil edilen dosyalarda yapılacak herhangi bir değişiklik mantıklı olmalıdır - eğer bilmiyorsanız, o zaman "neden bu kadar çok kod, zaten çalışıyor!" kisvesi altında. - OS / PC ile tekrarlanamayan bir hata ve / veya uyumluluk (taşınabilirlik) eksikliği alacaksınız
İçerik oluşturucular için yayın. Troller geçer. Grafik arayüzler için, OnChartEvent'i ayrı bir iş parçacığına koymak oldukça öyle görünüyor.
geliştiricilerin yaptığı modeli neden bozsun? - MQL programının modeli basit ve anlaşılır, olaylar var - bu olayları işleyen giriş noktaları var (OnTick(),OnInit()....OnChartEvent() )
Herhangi bir MQL programından ticaret ortamının durumunu almak mümkündür (göstergeler bile açık bir siparişin karını görebilir, vb.) ve bir uzman + komut dosyası, uzman + özel göstergeyi tek bir grafikte birleştirebilirsiniz - eşzamansız olursunuz MQL programlarının yürütülmesi, uzman işlemler, gösterge grafiksel görselleştirme görüntüler - özel gösterge akışının performansı yeterli değilse (aynı iş parçacığında çalışırlar), o zaman elbette bir sorun var - 2 Expert kullanmanız gerekir 2 çizelge üzerinde danışmanlar ve çizelgeler arasındaki etkileşimi düzenler...
tekrar - belirli bir görev var, bir uygulama var, birçok kez bu özelliğin neden gerekli olduğunu sordum, henüz bir cevap yok - sadece 3D görselleştirme hakkında uzamsal akıl yürütme .... ve DirectX'in nereden alınacağı hakkında bir konuşma yok 3D ile çalışmak için;)
IMHO, dokunma! )))
geliştiricilerin yaptığı modeli neden bozsun? - MQL programının modeli basit ve anlaşılır, olaylar var - bu olayları işleyen giriş noktaları var (OnTick(),OnInit()....OnChartEvent() )
Herhangi bir MQL programından ticaret ortamının durumunu almak mümkündür (göstergeler bile açık bir siparişin karını görebilir, vb.) ve bir uzman + komut dosyası, uzman + özel göstergeyi tek bir grafikte birleştirebilirsiniz - eşzamansız olursunuz MQL programlarının yürütülmesi, uzman işlemler, gösterge grafiksel görselleştirme görüntüler - özel gösterge akışının performansı yeterli değilse (aynı iş parçacığında çalışırlar), o zaman elbette bir sorun var - 2 Expert kullanmanız gerekir 2 çizelge üzerinde danışmanlar ve çizelgeler arasındaki etkileşimi düzenler...
tekrar - belirli bir görev var, bir uygulama var, birçok kez bu özelliğin neden gerekli olduğunu sordum, henüz bir cevap yok - sadece 3D görselleştirme hakkında uzamsal akıl yürütme .... ve DirectX'in nereden alınacağı hakkında bir konuşma yok 3D ile çalışmak için;)
IMHO, dokunma! )))
Bak. Bir düğme var. Onu ara. OnChartEvent kuyruğa alındı. Yalnızca bu kuyrukta zaten OnTick, ardından OnTime var ve içlerinde, bir saniyeliğine bloke eden ve boktan bir yineleme bulutu için bir döngü olan tüm enstrümanlar için CopyRate var. Sonuç olarak, örneğin, bir düğmede bir iletişim kutusu açılırsa, arayüzün askıda kalmasını sağlarız. Elbette kritik değil, ama çirkin.
GUI, ana Uzman Danışmanda ve diğer her şey ayrı bir Uzman Danışmanda çalışmalıdır. Bu ayrı bağımlı EA, görünmez bir OBJ_CHART üzerine yerleştirilir ve ana EventSendCustom() yolu ile etkileşime girer.
Çoklu iş parçacığı gibi bir şey ortaya çıkıyor. Ben bu şekilde uyguladım.
Bak. Bir düğme var. Onu ara. OnChartEvent kuyruğa alındı. Yalnızca bu kuyrukta zaten OnTick, ardından OnTime var ve içlerinde, bir saniyeliğine bloke eden ve boktan bir yineleme bulutu için bir döngü olan tüm enstrümanlar için CopyRate var. Sonuç olarak, örneğin, bir düğmede bir iletişim kutusu açılırsa, arayüzün askıda kalmasını sağlarız. Elbette kritik değil, ama çirkin.
OnChartEvent OnTick ve OnTime'ın önceliğini bilmiyorum, ancak geliştiriciler, Expert Advisor meşgulse ve olayı işlemediyse, bu olayın bir kuyruk oluşturmadığını, yani. sadece bir onay işareti veya zamanlayıcıyı atlayacaktır ( OnChartEvent - Bilmiyorum, kontrol etmedim)
burada geliştiricilerin mantığı basittir, her olay uzmanın belirli bir eylemidir, ancak bu olay için kesin olarak biliyorum ve bir kereden fazla kontrol ettim (MT5'te teoride daha fazla çalışıyorum, bilmiyorum ONTick fiziksel olarak nasıl çalışır):
MT4 hakkında kesinlikle söyleyeceğim: tüm ticaret işlemleri yalnızca gelen bir onay işaretiyle yapılmalıdır, aksi takdirde 10'dan 9'unda sunucudan bir ticaret işlemini gerçekleştirmeyi reddedersiniz,
onlar. SATIN AL butonlu bir arayüz yaptım - fikre göre, SATIN AL'a basıyorsunuz - hemen bir sipariş gönderiyorsunuz, ancak bu doğrudan işe yaramayacak, kullanıcının komutunu hatırlamanız gerekiyor (ideal olarak, yapmamak için düğmeyi kilitleyin) ellerinizle dürtün))) ve OnTick()'te bir kene geldiğinde - sunucuya bir sipariş gönderin - vakaların% 99'unda bu şekilde çalışacaktır, yani. bir onay işareti geldi - bir ticaret talebi gerçekleştirebilirsiniz (ve MQL'deki herhangi bir yerden değil)
ve asenkron iş parçacığına OnChartEvent'i de koyarsak, yürütülebilir kodun kilitlenmelerini de alır mıyız? - örneğin, OnChartEvent'te bir düğmeye bastığımda ticaret istatistikleri alıyorum ve OnTick'te aynı işlevi (son kaybeden ticaret) kullanıyorum - bir şeyle ilgili bir şey olacak! - IMHO hepsini tırmıklamayacaksın
GUI, ana Uzman Danışmanda ve diğer her şey ayrı bir Uzman Danışmanda çalışmalıdır. Bu ayrı bağımlı EA, görünmez bir OBJ_CHART üzerine yerleştirilir ve ana EventSendCustom() yolu ile etkileşime girer.
Çoklu iş parçacığı gibi bir şey ortaya çıkıyor. Ben bu şekilde uyguladım.
OnChartEvent OnTick ve OnTime'ın önceliğini bilmiyorum, ancak geliştiriciler, Expert Advisor meşgulse ve olayı işlemediyse, bu olayın bir kuyruk oluşturmadığını, yani. sadece bir onay işareti veya zamanlayıcıyı atlayacaktır ( OnChartEvent - Bilmiyorum, kontrol etmedim)
burada geliştiricilerin mantığı basittir, her olay uzmanın belirli bir eylemidir, ancak bu olay için kesin olarak biliyorum ve bir kereden fazla kontrol ettim (MT5'te teoride daha fazla çalışıyorum, bilmiyorum ONTick fiziksel olarak nasıl çalışır):
MT4 hakkında kesinlikle söyleyeceğim: tüm ticaret işlemleri yalnızca gelen bir onay işaretiyle yapılmalıdır, aksi takdirde 10'dan 9'unda sunucudan bir ticaret işlemini gerçekleştirmeyi reddedersiniz,
onlar. SATIN AL butonlu bir arayüz yaptım - fikre göre, SATIN AL'a basıyorsunuz - hemen bir sipariş gönderiyorsunuz, ancak bu doğrudan işe yaramayacak, kullanıcının komutunu hatırlamanız gerekiyor (ideal olarak, yapmamak için düğmeyi kilitleyin) ellerinizle dürtün))) ve OnTick()'te bir kene geldiğinde - sunucuya bir sipariş gönderin - vakaların% 99'unda bu şekilde çalışacaktır, yani. bir onay işareti geldi - bir ticaret talebi gerçekleştirebilirsiniz (ve MQL'deki herhangi bir yerden değil)
ve asenkron iş parçacığına OnChartEvent'i de koyarsak, yürütülebilir kodun kilitlenmelerini de alır mıyız? - örneğin, OnChartEvent'te bir düğmeye bastığımda ticaret istatistikleri alıyorum ve OnTick'te aynı işlevi (son kaybeden ticaret) kullanıyorum - bir şeyle ilgili bir şey olacak! - IMHO hepsini tırmıklamayacaksın