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
Bu bağlamda bir kontrol yapamaz mıyız?
Ne yazık ki, bu testten hiçbir şey çıkmadı...
IsStopped() ile örnek vererek sadece ilk kısma cevap vermeye çalışıyordum.
Bazen danışman bitmeden olayın işlenmesini tamamlamak gerekir, bazen de sizin durumunuzda olduğu gibi acilen tamamlamanız gerekir.
Belgelerdeki bu IsStopped() işlevinin açıklamasını okuyun, size bazı fikirler verebilir.
Ama sana başka bir operadan gibi geldi. Bir başkasından ise, olası varsayım için üzgünüm.
Ancak olası önerilerde dedikleri gibi, sorun arayışı çözüldü.
Hiç kimse, kodunun tüm mantığını bilmediğinden ve muhtemelen onu incelemeyeceğinden, kesin bir çözüm söylemeyecek.
Roman, burada yine tam olarak alıntı yapmıyorsun. Ama seçilenler arasında tek tek seçti.
Peki, tamam, diyelim ki zorunlu bir kapatma çalışıyor. Ve bu tamamlamanın başlatıldığı ve hesaplamaların karmaşıklığının 3 saniyeyi aştığı olaya ihtiyacım var. Ve programın bitmesini nasıl engelleyebilirim ve sonuna kadar çalışmasına izin verebilirim? Sorun tam olarak bu. Konuşma, nasıl sonlandırılacağıyla ilgili değil, yanlış olarak adlandırılan bir sonlandırmanın nasıl önleneceğiyle ilgiliydi. Veya önlemek için değil, belirli bir ana kadar, özellikle olay işlemenin tamamlanmasına kadar ertelemek.
Sürümünüzü kontrol ettim. Her şey şu mesajla sona erdi:
Genel olarak - bir çıkmaz ...
Yani önerilen seçenek
tamamen aynı şekilde çalışacaktır. Ve yine bir "çıkmaz" alıyorsunuz. Ancak çıkmaz mql'de değil, kafada. Böyle programlama yapamazsınız. Koddan bir şey beklemeden önce, kendinizi bir aptalın yerinde hayal etmeniz ve bir bilgisayarın yaptığı gibi aptalca tüm kodu birkaç kez gözden geçirmeniz gerekir. Bir durumda yürütmenin nereye aktarılacağından emin olun. Bu veya bu durumda hangi parametreler alınmalıdır. Ardından, infazı başlatarak, beklediğimizi alıp almadığımızı kontrol edin? Değilse, hata ayıklama sırasında gördüğümüz şeyi nereden aldığımızı bulmanız gerekir.
Başka türlü olamaz. Ve kod parçalarıyla yürütmede hata ayıklamak kesinlikle imkansızdır.
Roman, burada yine tam olarak alıntı yapmıyorsun. Ancak seçilenler arasında tek tek seçti.
Peki, tamam, diyelim ki zorunlu bir kapatma çalışıyor. Ve bu tamamlamanın başlatıldığı ve hesaplamaların karmaşıklığının 3 saniyeyi aştığı olaya ihtiyacım var. Ve programın bitmesini nasıl engelleyebilirim ve sonuna kadar çalışmasına izin verebilirim? Sorun bu. Konuşma, nasıl sonlandırılacağıyla ilgili değil, yanlış olarak adlandırılan bir sonlandırmanın nasıl önleneceğiyle ilgiliydi. Veya önlemek için değil, belirli bir ana kadar, özellikle olay işlemenin tamamlanmasına kadar ertelemek.
Hesaplamanın tamamlanmasını bekleyin.
Mql'de ne yazık ki, bekleme tipinin böyle bir işlevi yoktur.
Sleep() ile deneme yapmayı deneyebilirsiniz, ancak uyku açık bir tamamlanma işareti değildir, bu nedenle pek uygun değildir.
Farklı bir şekilde bir koşul oluşturmaya çalışın, eğer (hesaplama tamamlandıysa) zorunlu tamamlamaya başlayın.
Yani önerilen seçenek
tamamen aynı şekilde çalışacaktır. Ve yine bir "çıkmaz" alıyorsunuz. Ancak çıkmaz mql'de değil, kafada. Böyle programlama yapamazsınız. Koddan bir şey beklemeden önce, kendinizi bir aptalın yerinde hayal etmeniz ve bir bilgisayarın yaptığı gibi aptalca tüm kodu birkaç kez gözden geçirmeniz gerekir. Bir durumda yürütmenin nereye aktarılacağından emin olun. Bu veya bu durumda hangi parametreler alınmalıdır. Ardından, infazı başlatarak, beklediğimizi alıp almadığımızı kontrol edin? Değilse, hata ayıklama sırasında gördüğümüz şeyi nereden aldığımızı bulmanız gerekir.
Başka türlü olamaz. Ve kod parçalarıyla yürütmede hata ayıklamak kesinlikle imkansızdır.
İşin aslı, güncellemeden önce her şey çalışıyordu ve şimdi ne yapacağımı bilmiyorum.
Ayrıca prensip olarak tüm kodlar açıktır.
Ayrıca, OnTester() versiyonumu tartışmak ve geliştirmek için zaten bir başlık açmak istiyordum ve işte burada...
Anlaşıldığı üzere, sorun onun içinde değil, TesterStop() 'ın değiştirilmiş uygulamasında. Prensip olarak, OnTester() ile doğrudan bir ilişkisi olmayan, ancak havayı bozan ...
Şimdi başka bir şey deneyeceğim...
İşin aslı, güncellemeden önce her şey çalışıyordu ve şimdi ne yapacağımı bilmiyorum.
Ayrıca prensip olarak tüm kodlar açıktır.
Ayrıca, OnTester() versiyonumu tartışmak ve geliştirmek için zaten bir başlık açmak istiyordum ve işte burada...
Anlaşıldığı üzere, sorun onun içinde değil, TesterStop()'un değiştirilmiş uygulamasında. Prensip olarak, OnTester() ile doğrudan bir ilişkisi olmayan, ancak havayı bozan ...
Şimdi başka bir şey deneyeceğim...
Sonuçta, önceki yapılara bir bağlantı verdiler. Dosyaları değiştirin ve kontrol edin. O zaman herkese hangi yapıda olduğunu ve şimdi çalıştığını söyleyebilirsiniz. İşe yaramazsa, bu tür parametrelerin çakıştığı ve kodun şu anda sorunların ortaya çıktığı bu bölümüne yol açmadığı anlamına gelir.
Sonuçta, önceki yapılara bir bağlantı verdiler. Dosyaları değiştirin ve kontrol edin. O zaman herkese hangi yapıda olduğunu ve şimdi çalıştığını söyleyebilirsiniz. İşe yaramazsa, bu tür parametrelerin çakıştığı ve kodun şu anda sorunların ortaya çıktığı bu bölümüne yol açmadığı anlamına gelir.
Ben de denedim. Teslim edilen 2007 yapısı ve orada tüm bu sorunlar mevcut değil. Optimizasyondan sonra tüm günlüğü özellikle inceledim. 4 (sadece 4!) sıfıra bölme hatası bulundu. Bunlar, ticaretin yokluğunda ortaya çıkanlardır. Bu, elbette düzeltilmeliydi, ancak genel optimizasyon sonucu üzerinde hiçbir etkisi olmadı! Ve yeni yapıda, hatalar birikmişti ve optimizasyon imkansız hale geldi.
Şimdi, @Roman'dan gelen ipucu ile ilgili.
Teşekkürler, doğru mesaj olduğu ortaya çıktı. Sadece benim durumumda, TesterStop() için işe yaramaz olduğu ortaya çıktı, çünkü TesterStop() testin bazı_unknown_percentage tarafından geçmiş olmasını gerektiriyor. Ve belgelerde bundan bahsedilmiyor.
Ancak ExsprtRemove() ile işe yaradı. Bu işlev için, orada kaç testin geçtiği önemli değildir. Doğru, tüm çalışma kodunu if içine sarmam gerekiyordu.
Genel olarak, koltuk değneği ile kodun sağlamlığı geri yüklendi. Tekrar teşekkürler.
not Aslına bakarsanız, başka bir koltuk değneği için koltuk değneği yapmak zorunda kaldım. gülümsedi)))
not Aslına bakarsanız, başka bir koltuk değneği için koltuk değneği yapmak zorunda kaldım. gülümsedi)))
Seçeneklerin olmadığına inanmıyorum. Koltuk değneklerini koltuk değneklerine programlamayı seviyorsanız, karışmaya hakkım yok. Slava bunu yanıtladı
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
Slava , 2019.06.16 14:04
Expert Advisor'ın hemen durdurulması, bellek bozulması anlamına gelir. Expert Advisor'ın hemen durdurulmasından sonra, serbest bırakılmamış bellek blokları kalabilir. Bu nedenle Expert Advisor'ın anında durdurulması, yalnızca istemci terminali veya test aracısı sonlandırıldığında ve yalnızca Expert Advisor durdurma bayrağını işlemez ve yürütmeye devam ederse kullanılır.
TesterStop, testi bitirme komutunu verir. Bu, mevcut OnInit, OnTick, OnTimer, OnChartEvent işleyicisinin tamamlanmasından sonra, işleme döngüsü tamamlanacağı için artık hiçbir test cihazı olayının işlenmeyeceği anlamına gelir. Ve OnTester ve OnDeinit çağrılacak
Ben de denedim. Teslim edilen 2007 yapısı ve orada tüm bu sorunlar mevcut değil. Optimizasyondan sonra tüm günlüğü özellikle inceledim. 4 (sadece 4!) sıfıra bölme hatası bulundu. Bunlar, ticaretin yokluğunda ortaya çıkanlardır. Bu, elbette düzeltilmeliydi, ancak genel optimizasyon sonucu üzerinde hiçbir etkisi olmadı! Ve yeni yapıda, hatalar birikmişti ve optimizasyon imkansız hale geldi.
Şimdi, @Roman'dan gelen ipucu ile ilgili.
Teşekkürler, doğru mesaj olduğu ortaya çıktı. Sadece benim durumumda, TesterStop() için işe yaramaz olduğu ortaya çıktı, çünkü TesterStop() testin bazı_unknown_percentage tarafından geçmiş olmasını gerektiriyor. Ve belgelerde bununla ilgili bir kelime yok.
Ancak ExsprtRemove() ile işe yaradı. Bu işlev için, orada kaç testin geçtiği önemli değildir. Doğru, tüm çalışma kodunu if içine sarmam gerekiyordu.
Genel olarak, koltuk değneği ile kodun sağlamlığı geri yüklendi. Tekrar teşekkürler.
not Aslına bakarsanız, başka bir koltuk değneği için koltuk değneği yapmak zorunda kaldım. gülümsedi)))
Bu bir koltuk değneği değil, geliştiriciler tarafından önerilen bir uygulamadır.
Bu işlevi while döngüsünün açıklamasında buldum
Bu nedenle, bu işlev programın zorla sonlandırılması gerçeğini kontrol ederse, o zaman neden TesterStop () için kullanmıyorsunuz fikrini buldum.
TesterStop() için çalışmaması üzücü, şimdi bunu öğreneceğiz.
Geliştiricilere sormak adil olsa da, TesterStop () işlevi için IsStopped () işlevinin etkinleşmesi mi gerekiyor?
Belki bir hatadır?
Ancak asıl mesele, soruna bir çözüm bulmaktı.
Seçeneklerin olmadığına inanmıyorum. Koltuk değneklerini koltuk değneklerine programlamayı seviyorsanız, karışmaya hakkım yok. Slava bunu yanıtladı
Her şeyi anlıyorum ve koltuk değneğine ihtiyacım yok. Ve burada bir koltuk değneği aramalıydım, ne için okudum .
Belki. Ama bundan kimsenin şikayet ettiğini hatırlamıyorum.