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

 
Eugeni Neumoin :

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ı.

  1. Zaman serilerine en az iki dakikada bir erişilmelidir - yalnızca bu durumda sürekli güncel durumları garanti edilecektir. Yani, çoklu... göstergelerde kodun bu kısmı varsayılan olarak olmalıdır.
  2. MQL5'te, MQL4'ün aksine, bir seferde güncellenebilen tüm grafik nesnelerle gerekli tüm manipülasyonlardan sonra grafiklerdeki değişikliği görüntülemek için grafiği CartRedraw() kullanarak güncellemeniz gerekir - böylece bir öğenin her değişikliğinden sonra, grafiği güncelleyin. Amacımı netleştirdim mi bilmiyorum. Örneğin, kullanıcı bir düğmeye tıkladıysa ve ek olarak birkaç öğeden oluşan yığınlanmış bir nesne gibi bir şey çizilmesi gerekiyorsa, tüm öğeleri çizmeniz ve ardından grafiği yalnızca bir kez güncellemeniz gerekir. Bir nesnenin çizilen her öğesinden sonra güncelleme yapmak yerine.
    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)
 
Artyom Trishkin :

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.

 
Eugeni Neumoin :

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.

 
Artyom Trishkin :

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.

Her şeyi bu şekilde ayarladı. Ve kodda, OnChartEvent() içindeki hata ayıklama parçaları her zaman yorumlanmış bir biçimde bulunur. Ama teşekkürler. Öyle yapacağım. nedenini ararım.
 

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ı...

 
Eugeni Neumoin :

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 :)
Tüm çalışan telefon numaralarıyla en az iki dakikada bir iletişime geçmeniz yeterlidir. Genelde 90 saniyede bir dönüyorum. Her şeyi aynı anda çekmemek için arama süresini farklı TF'ler için yayabilirsiniz. Ancak her birine - sesli aralıktan daha az değil.
 
Artyom Trishkin :
Burada yumuşaklık yok :)
Tüm çalışan telefon numaralarıyla en az iki dakikada bir iletişime geçmeniz yeterlidir. Genelde 90 saniyede bir dönüyorum. Her şeyi aynı anda çekmemek için arama süresini farklı TF'ler için yayabilirsiniz. Ancak her birine - sesli aralıktan daha az değil.

İşte frenler.

Ama sahip olduklarına katlanmak zorundasın.

O enginliği kucaklamak mümkün değil.)

 
Artyom Trishkin :
Burada yumuşaklık yok :)
Tüm çalışan telefon numaralarıyla en az iki dakikada bir iletişime geçmeniz yeterlidir. Genelde 90 saniyede bir dönüyorum. Her şeyi aynı anda çekmemek için arama süresini farklı TF'ler için yayabilirsiniz. Ancak her birine - sesli aralıktan daha az değil.

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.

 
Eugeni Neumoin :

Ö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.