MT4'ten MT5'e aktarma sorunu. Veya daha doğrusu, MT5'te bazı algoritmaların hatasız yürütülmesinin imkansızlığı. - sayfa 4
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
OnCalculate() ile ilgili bir sorun değil. GUI'nin tamamı OnChartEvent() aracılığıyla çalışır. Grafik arayüzünde 400'den fazla buton vardır.Bazı butonlar zaman serileri ile hiçbir şekilde etkileşime girmez. OnCalculate() ve OnTrade() işlevleri de bir sonraki tik işaretine kadar bekleyebilir. Psikolojik olarak algılanamaz. Ancak OnChartEvent() ile daha karmaşıktır. İşte burada insan psikolojisi devreye giriyor. Programın kullanıcısı grafik arayüzünün düğmesine tıklar. Ve istenilen cevabı alamamak. Onun tepkisi nedir? Tepkilerden biri - aynı düğmeye tekrar basar. Düğmelerin çoğuna ikinci kez tıklandığında bu düğmeyle bağlanan işlevselliği devre dışı bırakacak şekilde yaptım. Düğme eylemini başka bir şekilde devre dışı bırakma önerinizi öngörüyorum. Ama MT4 için de aynı program var. Orada her şey yolunda gidiyor. MT4'te grafik arayüzle etkileşime geçmek için bir algoritma ve MT5'te başka bir algoritma olduğu ortaya çıktı. Aynı programın bu tür davranışları yalnızca reddedilmeye neden olacaktır.
MT5'e aktarırken benzer bir şey yaptım - OnChartEvent'ten () bir çıkış ekledim. Grafik arayüzün basitçe öldüğü bu yüzden yalan söylemek istemiyorum.
Evet ve 5 dakika sonra OnTimer() içindeki zaman serilerine erişiyorum. 2 dakika sonra yapacağım. Ne olduğunu kontrol edeceğim.
Artem, önerilerin daha önce yardımcı oldu.
Hayır, elbette grafiklerle çalışma mantığını değiştirmek için herhangi bir teklif olmayacak - platformlar arası kod aynı şekilde çalışmalı.
Kullanıcı düğmeye tıkladığında, ancak hiçbir şey görmediğinde, aslında her şey oradadır, yalnızca grafik henüz güncellenmemiştir (yalnızca bir onay işaretinin ortaya çıkmasıyla kendini güncelleyecektir)
Hayır, elbette grafiklerle çalışma mantığını değiştirmek için herhangi bir teklif olmayacak - platformlar arası kod aynı şekilde çalışmalı.
Düğmeleri sonlandırmak için önerebileceğim tek şey, her durumda, gerekli zaman serileri henüz mevcut olmadığında, verileri üzerinde grafik oluşturmanın hala bir yolu olmadığıdır. Bu durumda, verilerin kullanılabilir hale geldiği anı beklemeniz ve beklerken düğmeleri devre dışı bırakmanız, örneğin Windows arayüzlerine benzer hale getirmeniz gerekir: düğme eylemi mevcut değilse, düğme gridir. Böyle bir mantık her iki platform için de mevcut olabilir - böylece kodda hiçbir farklılık olmaz.
ChartRedraw(), örneğin OnChartEvent() ve diğerlerinden büyük bloklar ayrılırken benim için etkinleştirilir. Yani, bu fonksiyonla her şey yolunda.
Pop-up ipuçları hakkında. Bunlar yalnızca, bir sayıya veya simgeye tıkladığınızda her şeyin işe yarayacağının göstergeleridir.
Sayı ve sembole tıklarsanız, OnChartEvent() öğelerinden biri çalışmalıdır - CHARTEVENT_OBJECT_CLICK . Araç ipucu görünmediği sürece patlamaz. Burada bunun neden olduğunu anlamak istiyoruz. CHARTEVENT_OBJECT_CLICK çalışmıyor .
Ve zaman serilerine erişimi yakından izleyeceğim.
ChartRedraw(), örneğin OnChartEvent() ve diğerlerinden büyük bloklar ayrılırken benim için etkinleştirilir. Yani, bu fonksiyonla her şey yolunda.
Açılır pencere ipuçları hakkında. Bunlar yalnızca, bir sayıya veya simgeye tıkladığınızda her şeyin işe yarayacağının göstergeleridir.
Sayı ve sembole tıklarsanız, OnChartEvent() öğelerinden biri çalışmalıdır - CHARTEVENT_OBJECT_CLICK . Araç ipucu görünmediği sürece patlamaz. Burada bunun neden olduğunu anlamak istiyoruz. CHARTEVENT_OBJECT_CLICK çalışmıyor .
Ve zaman serilerine erişimi yakından izleyeceğim.
Grafik olay işleyicisinin en başında, sparam parametresini günlüğe çıktılayın - ardından herhangi bir eylem için bilgi görüntülenecektir. Ardından, çıktıyı sınırlamaya başlayın - bir nesne tıklama olayı varsa (id== CHARTEVENT_OBJECT_CLICK ), ardından spam'i günlüğe kaydedin. Ve çok yavaş bir şekilde amaca ulaşacaksınız.
Grafik olay işleyicisinin en başında, sparam parametresini günlüğe çıktılayın - ardından herhangi bir eylem için bilgi görüntülenecektir. Ardından, çıktıyı sınırlamaya başlayın - bir nesne tıklama olayı varsa (id== CHARTEVENT_OBJECT_CLICK ), ardından spam'i günlüğe kaydedin. Ve çok yavaş bir şekilde amaca ulaşacaksınız.
Rakamlara ve sembollere bağlanma ile ilgili sorunları önlemek için OBJPROP_ZORDER kullanarak sayıların ve sembollerin önceliğini artırmanız gerekir.
MT4'te onsuz çalışır. Ancak MT4'te her ihtimale karşı önceliği artırdım. Ayrıca, dalga sembollerinin önceliği, sayılardan daha fazlasını yaptı.
Bunu anladım.
Tüm zaman dizilerini 2 dakikada seğirme - Bu görevin en sorunsuz şekilde yürütülmesi için farklı seçenekler seçiyorum.
Süreç başladı...
Rakamlara ve sembollere bağlanma ile ilgili sorunları önlemek için OBJPROP_ZORDER kullanarak sayıların ve sembollerin önceliğini artırmanız gerekir.
MT4'te onsuz çalışır. Ancak MT4'te her ihtimale karşı önceliği artırdım. Ayrıca, dalga sembollerinin önceliği, sayılardan daha fazlasını yaptı.
Bunu anladım.
Tüm zaman dizilerini 2 dakikada seğirme - Bu görevin en sorunsuz şekilde yürütülmesi için farklı seçenekler seçiyorum.
Süreç başladı...
Burada yumuşaklık yok :)
İşte frenler.
Ama sahip olduklarına katlanmak zorundasın.
O enginliği kucaklamak mümkün değil.)
Burada yumuşaklık yok :)
Yayılamaz. En az bir TF güncellenmemişse, gösterge bir miktar grafik gösterebilir. yanlış inşa etmek.
Öte yandan, OnCalculate ve OnChartEvent işlevlerinden önce zaman serilerinin kullanılabilirliğini kontrol ettim. Önerildiği gibi.
Zaman serilerinin güncellenmesi ve zaman serilerinin kullanılabilirliğinin kontrol edilmesi ciddi yavaşlamalara neden olur.
Yine de, zaman serilerine erişim kesintileri elde edilir. İlk gönderilerden birinde bir şube oluştururken söylediğim gibi. Bu, zaman serilerini programlı olarak güncellemeniz gerektiğini onaylar.
Bu ilk.
İkinci. Neden her geliştiricinin zaman serilerine erişim organizasyonundan muzdarip olması gerektiği şekilde yapılıyor?
Bu eziyetleri dışlamak için neden ek bir "mekanizma" yaratılmadı?
Birinin bu azaba ihtiyacı varsa, şimdi olanı kullanmayı kimse yasaklamaz. Ve zaman serisine evrensel alternatif erişimin uygun olduğunu düşünenler için, bu erişimin geliştiriciler tarafından yapılması daha iyidir.
Birkaç kişi benden programı MT4'ten MT5'e aktarmamı istedi. Tercüme edildi. Bu çeviriden memnun değilim. Ama şu ana kadar programı indirenler şikayetçi değil. Belki onlara yakışır. Her ne kadar şüphe etsem de.
kendimden ekleyeceğim. Zaman serisi erişim optimizasyonunu denemeyi bırakıyorum. Bu verimsiz bir zaman kullanımıdır. Daha ilginç aktiviteler de var. İlgilenenler MT5 ile çalışsın. MT5'ten kemirilebilecek tek şey alıntıların tarihidir. NN eğitiminde kullanım için.
Öte yandan, OnCalculate ve OnChartEvent işlevlerinden önce zaman serilerinin kullanılabilirliğini kontrol ettim. Önerildiği gibi.
Zaman serilerinin güncellenmesi ve zaman serilerinin kullanılabilirliğinin kontrol edilmesi ciddi yavaşlamalara neden olur.
Bunun her bir buçuk dakikada bir zamanlayıcıda yapılması önerildi. Ancak her onay işaretinden önce değil, hatta daha fazlası - grafik olayından sonra değil.
MT5'teki zaman serilerine erişim gerçekten ideal değil. Ancak sorunu çözmeniz gerekiyorsa ve bir bahane bulamıyorsanız, bu mümkündür.