Olağan gösterge kodu iyileştirme yönteminin, nesneleri kullanan kapalı koddaki EA'larla olan çatışmayı küresel olarak çözemediği ortaya çıktı.
Uzman Danışmanı geliştirmenin tüm gösterge tablosu göstergeleriyle (ki bu benim görevim) çatışmayı küresel olarak çözeceğini umuyorum.
MT4 build 1353 başlığında yazdım, belki terminal programcıları dikkat eder.
Not: Baykuşlarda değişiklik yaptım ve kayaklarda bir şey gitmedi ...
ObjectGetXXX, ObjectFind, ObjectsTotal, ObjectName, vb. nerede ve neden çağrıldığını bulmak için tüm kodu (gösterge ve Uzman Danışman) inceleyin - bunlar senkrondur ve her şeyi ciddi şekilde yavaşlatabilir. Mümkünse bunlardan kurtulmaya çalışın.
ObjectGetXXX, ObjectFind, ObjectsTotal, ObjectName, vb. nerede ve neden çağrıldığını bulmak için tüm kodu (gösterge ve EA) inceleyin - bunlar senkrondur ve her şeyi ciddi şekilde yavaşlatabilir. Mümkünse onlardan kurtulmaya çalışın.
Sadece OnChartEvent() işlevini akıllıca yapmanız ve arka arkaya tüm olaylara tepki vermemeniz gerekir. Ya da orada ne olduğunu bilmiyorum... Ve neden burada oturup sorunlu kodu göstermeye bile tenezzül etmeyen adam için düşünelim?
Şimdi ObjectFind() ve ObjectGet()'in 1000000 tekrarından oluşan bir döngü ekledim - her şey normal.
Sadece OnChartEvent() işlevini akıllıca yapmanız ve arka arkaya tüm olaylara tepki vermemeniz gerekir. Ya da ne olduğunu bilmiyorum.... Ve neden burada oturup sorunlu kodu gösterme zahmetine bile girmeyen adam için düşünelim?
Şimdi ObjectFind() ve ObjectGet() işlevlerinin 1000000 tekrarından oluşan bir döngü ekledim - her şey normal.
Bağlantıyı açarsanız, yazının altında kodu içeren bir ek bulacaksınız. Daha sonra orada tartışmanın kim tarafından ve nasıl geliştirildiğini okuyabilirsiniz.
Sorun özellikle önerilen kodda değil (herhangi bir Uzman Danışmanı bir nesneyle kendiniz yazabilirsiniz), ancak bir gösterge aracılığıyla grafik değiştirme işleviyle çalışırken nesnelerle (tek bir istisna dışında) tüm Uzman Danışmanları etkileyen genel bir hatadır.
Nikolay çözümünü sundu, ancak bu tür kodların çalışmasında hatalarım var, sorunla daha fazla ilgileniyorum.
точнее в очередностях OnInit удалении своих объектов чарта. Тут ремонт терминала не имеет смысла не создавайте объектов по крайней мере до первого OnChartEvent. И удалять объекты пачкой лучше по ChartObjectsDelete
Sadece OnChartEvent() işlevini akıllıca yapmanız ve arka arkaya tüm olaylara tepki vermemeniz gerekir. Ya da ne olduğunu bilmiyorum.... Ve neden burada oturup sorunlu kodu gösterme zahmetine bile girmeyen adam için düşünelim?
Şimdi ObjectFind() ve ObjectGet() işlevlerinin1000000 tekrarından oluşan bir döngü ek ledim - her şey normal.
Belirsiz bir şüphem var: Hiç bir döngüden daha karmaşık bir şey yazdınız mı?
Bağlantıyı açarsanız, yazının altında kodu içeren bir ek bulacaksınız. Daha sonra orada tartışmanın kim tarafından ve nasıl geliştirildiğini okuyabilirsiniz.
Sorun özellikle önerilen kodda değil (herhangi bir Uzman Danışmanı bir nesneyle kendiniz yazabilirsiniz), ancak bir gösterge aracılığıyla grafik değiştirme işleviyle çalışırken nesnelerle (tek bir istisna dışında) tüm Uzman Danışmanları etkileyen genel bir hatadır.
Nikolay çözümünü sundu, ancak bu tür kodların çalışmasıyla ilgili hatalarım var, sorunla daha fazla ilgileniyorum.
İşte değişiklikler:
if(sparam=="Win_Ea_"){ // вот тут надо поцивильней сделать, из класса брать имя... но уж сами как-нибудь if(id == CHARTEVENT_OBJECT_CLICK){
if(win.BtnClickUP()){
win.Process();
ChartPeriodSet(true);
}
if(win.BtnClickDN()){
win.Process();
ChartPeriodSet(false);
}
}
}
if(id == CHARTEVENT_MOUSE_MOVE){
MouseX=(int)lparam;
MouseY=(int)dparam;
}
Korkunç takılmalardan kurtulmayı başardım. Düğmelere ölçülü bir hızda basarsanız her şey yolunda gidiyor.
Ancak bir ağaçkakan gibi vurmaya başlarsanız, yine takılmalar yaşarsınız, ancak bunlar farklı ve daha kısadır. Sanmıyorum
onlardan kurtulamazsınız. Belki de zaman dilimi yapısıyla ilgilidir.
Düğmeler üzerinde çalışmam gerekiyor, böylece basılı / basılmamış pozisyonlar var ve düğmeye hemen basılmaması için eylemsizlik getiriyorum.
0.1 saniyelik bir gecikme durumu düzeltecektir ve kullanıcı bunu fark etmeyecektir.
--
Aslında, bir uzman olmadan düğmelere öfkeli bir hızla basabilirsiniz....
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Olağan gösterge kodu iyileştirme yönteminin, nesneleri kullanan kapalı koddaki EA'larla olan çatışmayı küresel olarak çözemediği ortaya çıktı.
Uzman Danışmanı geliştirmenin tüm gösterge tablosu göstergeleriyle (ki bu benim görevim) çatışmayı küresel olarak çözeceğini umuyorum.
MT4 build 1353 başlığında yazdım, belki terminal programcıları dikkat eder.
Not: Baykuşlarda değişiklik yaptım ve kayaklarda bir şey gitmedi ...
ObjectGetXXX, ObjectFind, ObjectsTotal, ObjectName, vb. nerede ve neden çağrıldığını bulmak için tüm kodu (gösterge ve Uzman Danışman) inceleyin - bunlar senkrondur ve her şeyi ciddi şekilde yavaşlatabilir. Mümkünse bunlardan kurtulmaya çalışın.
Yukarıda ChartRedraw()!!!! işlevini çağırmayı unutmayın...
Sayın moderatörler, bana her türlü saçmalık atfediliyor ve yanıt vermeme izin verilmiyor mu? İnanılmaz!
ObjectGetXXX, ObjectFind, ObjectsTotal, ObjectName, vb. nerede ve neden çağrıldığını bulmak için tüm kodu (gösterge ve EA) inceleyin - bunlar senkrondur ve her şeyi ciddi şekilde yavaşlatabilir. Mümkünse onlardan kurtulmaya çalışın.
Yukarıda ChartRedraw()!!!! işlevini çağırmayı unutmayın...
Sadece OnChartEvent() işlevini akıllıca yapmanız ve arka arkaya tüm olaylara tepki vermemeniz gerekir. Ya da orada ne olduğunu bilmiyorum... Ve neden burada oturup sorunlu kodu göstermeye bile tenezzül etmeyen adam için düşünelim?
Şimdi ObjectFind() ve ObjectGet()'in 1000000 tekrarından oluşan bir döngü ekledim - her şey normal.
Sayın moderatörler, bana her türlü saçmalık atfediliyor ve yanıt vermeme izin verilmiyor mu? İnanılmaz!
Böyle bir seçiciliğe maruz kalan tek kişi siz değilsiniz.
Sadece OnChartEvent() işlevini akıllıca yapmanız ve arka arkaya tüm olaylara tepki vermemeniz gerekir. Ya da ne olduğunu bilmiyorum.... Ve neden burada oturup sorunlu kodu gösterme zahmetine bile girmeyen adam için düşünelim?
Şimdi ObjectFind() ve ObjectGet() işlevlerinin 1000000 tekrarından oluşan bir döngü ekledim - her şey normal.
Dördüncü kez yazacağım, benim için zor değil.
https://www.mql5.com/ru/forum/379526/page9#comment_25865481
Bağlantıyı açarsanız, yazının altında kodu içeren bir ek bulacaksınız. Daha sonra orada tartışmanın kim tarafından ve nasıl geliştirildiğini okuyabilirsiniz.
Sorun özellikle önerilen kodda değil (herhangi bir Uzman Danışmanı bir nesneyle kendiniz yazabilirsiniz), ancak bir gösterge aracılığıyla grafik değiştirme işleviyle çalışırken nesnelerle (tek bir istisna dışında) tüm Uzman Danışmanları etkileyen genel bir hatadır.
Nikolay çözümünü sundu, ancak bu tür kodların çalışmasında hatalarım var, sorunla daha fazla ilgileniyorum.
Sadece OnChartEvent() işlevini akıllıca yapmanız ve arka arkaya tüm olaylara tepki vermemeniz gerekir. Ya da ne olduğunu bilmiyorum.... Ve neden burada oturup sorunlu kodu gösterme zahmetine bile girmeyen adam için düşünelim?
Şimdi ObjectFind() ve ObjectGet() işlevlerinin1000000 tekrarından oluşan bir döngü ek ledim - her şey normal.
Belirsiz bir şüphem var: Hiç bir döngüden daha karmaşık bir şey yazdınız mı?
Dördüncü kez yazacağım, benim için sorun değil.
https://www.mql5.com/ru/forum/379526/page9#comment_25865481
Bağlantıyı açarsanız, yazının altında kodu içeren bir ek bulacaksınız. Daha sonra orada tartışmanın kim tarafından ve nasıl geliştirildiğini okuyabilirsiniz.
Sorun özellikle önerilen kodda değil (herhangi bir Uzman Danışmanı bir nesneyle kendiniz yazabilirsiniz), ancak bir gösterge aracılığıyla grafik değiştirme işleviyle çalışırken nesnelerle (tek bir istisna dışında) tüm Uzman Danışmanları etkileyen genel bir hatadır.
Nikolay çözümünü sundu, ancak bu tür kodların çalışmasıyla ilgili hatalarım var, sorunla daha fazla ilgileniyorum.
İşte değişiklikler:
Korkunç takılmalardan kurtulmayı başardım. Düğmelere ölçülü bir hızda basarsanız her şey yolunda gidiyor.
Ancak bir ağaçkakan gibi vurmaya başlarsanız, yine takılmalar yaşarsınız, ancak bunlar farklı ve daha kısadır. Sanmıyorum
onlardan kurtulamazsınız. Belki de zaman dilimi yapısıyla ilgilidir.
Düğmeler üzerinde çalışmam gerekiyor, böylece basılı / basılmamış pozisyonlar var ve düğmeye hemen basılmaması için eylemsizlik getiriyorum.
0.1 saniyelik bir gecikme durumu düzeltecektir ve kullanıcı bunu fark etmeyecektir.
--
Aslında, bir uzman olmadan düğmelere öfkeli bir hızla basabilirsiniz....
Ve işte buradayız, askılardan tamamen kurtuldum.
Eğri büğrü olabilir ama asıl önemli olan nokta bu:
Mesele, grafiği değiştirirken bir nesneyi silmemektir.
Destroy() ile ne olacağını görmeliyiz... eğer bu şekilde bırakmak mümkünse...
Herkese merhaba!)
Özür dilerim, ama eğer mq4'ten bahsediyorsak, o zaman belki bu şekilde çözülebilir :?)
Başka ne frenler yaratabilir:
Neden?