Hatalar, hatalar, sorular - sayfa 2180
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
Sıfır olduğu çok açık.
Ve ne - belirli bir zaman diliminde sıfır çubuk olduğuna karar vermek normal 22 saniye mi?
Bars'ın dahili uygulamasında bariz bir algoritmik hata.
Ancak belirli bir zaman dilimindeki sıfır çubukları bu sıfırdan nasıl ayırt ettiğinizi anlamıyorum:
Belgelerden: Bars() işlevi çağrılırken belirtilen parametrelere sahip zaman serisi verileri henüz terminalde oluşturulmadıysa veya zaman serisi verileri, işlevçağrısı sırasında ticaret sunucusuyla senkronize edilmemişse, işlev boş bir değer döndürür .
Başka bir deyişle, sonuç sıfırını hata sıfırından nasıl ayırt edebilirim?Ancak belirli bir zaman dilimindeki sıfır çubukları bu sıfırdan nasıl ayırt ettiğinizi anlamıyorum:
Belgelerden: Bars() işlevi çağrılırken belirtilen parametrelere sahip zaman serisi verileri henüz terminalde oluşturulmadıysa veya zaman serisi verileri, işlevçağrısı sırasında ticaret sunucusuyla senkronize edilmemişse, işlev boş bir değer döndürür .
Bu soruda sıfırın orijini önemli değil ama önemli olan bu sıfırın Bars fonksiyonu tarafından çağlar boyunca birkaç on saniye şeklinde doğmasıdır.
Ancak belirli bir zaman dilimindeki sıfır çubukları bu sıfırdan nasıl ayırt ettiğinizi anlamıyorum:
Belgelerden: Bars() işlevi çağrılırken belirtilen parametrelere sahip zaman serisi verileri henüz terminalde oluşturulmadıysa veya zaman serisi verileri, işlevçağrısı sırasında ticaret sunucusuyla senkronize edilmemişse, işlev boş bir değer döndürür .
Başka bir deyişle, sonuç sıfırını hata sıfırından nasıl ayırt edebilirim?Peki, kendin yargıla. Bars işlevinin bir analogunu oluşturma görevi ile karşı karşıya kaldıysanız ve bir datetime dizisi verildiyse, öğelerinin değerleri artan sayı ile azalır, başka bir deyişle dizi sıralanır.
Ne düşünüyorsunuz - belirli bir zaman diliminde bu sıralı dizinin eleman sayısını bulmak için bir algoritma uygulamak zor mu? Ve verilen aralıkta tek bir çubuk yoksa veya dizi henüz başlatılmamışsa, sıfır döndürülmelidir.
Hayır, algoritma oldukça basit. 22 saniye boyunca orada ne yapılabilir?
Bu soruda sıfırın orijini önemli değil ama önemli olan bu sıfırın Bars fonksiyonu tarafından çağlar boyunca birkaç on saniye şeklinde doğmasıdır.
Önemli olan orijindir, çünkü eğer ::Bars() bir geçmiş hatası durumunda -1 döndürürse ve (şimdi olduğu gibi) 0 değil, o zaman gecikme olmaz. Ve şimdi 0 bir hata olarak yorumlanıyor ve dahili yeniden denemeler nedeniyle gecikme oluşuyor https://www.mql5.com/ru/forum/1111/page2200#comment_6955559
Ayrıca: diyelim ki ek bir kontrol getirdik - gecikme ortadan kalktı. Ve sonra ne? Sıfır aldın. Bu bir sonuç mu yoksa bir hata mı?
Büyük olasılıkla bu, geçmişin yüklenmesinden kaynaklanmaktadır.
Yani şaka, ilk Baskının gecikmeden işlenmesidir, yani. H4 geçmişi zaten yüklendi.
Ve CopyTime H4'ü W1 olarak değiştirirseniz, o zaman hiç fren olmayacaktır. Yani W1'in geçmişi de zaten yüklenmiştir.
Sadece Barlar, CurrentTime() ile sıfır çubuğunun açılış zamanına kadar olan aralıktaki zamandan bir stupora girer.
Önemli olan orijindir, çünkü eğer ::Bars() bir geçmiş hatası durumunda -1 döndürürse ve (şimdi olduğu gibi) 0 değil, o zaman gecikme olmaz. Ve şimdi 0 bir hata olarak yorumlanıyor ve dahili yeniden denemeler nedeniyle gecikme oluşuyor https://www.mql5.com/en/forum/1111/page2200#comment_6955559
Ayrıca: diyelim ki ek bir kontrol getirdik - gecikme ortadan kalktı. Ve sonra ne? Sıfır aldın. Bu bir sonuç mu yoksa bir hata mı?
Algoritmalarımda her yerde, neyin sıfır olduğu önemli değil: belirli bir aralığa düşen çubuk yok veya böyle bir dizinin yokluğu.
Sorundan kaçıyorsun.
Sorundan kaçıyorsun.
Sorunun özünü belirtiyorum ama siz kendi özel durumunuza odaklanmış durumdasınız. Önceki mesajınıza bakılırsa, her şey önceki sayfada ayrıntılı olarak açıklanmış olmasına rağmen, gecikmenin hangi durumlarda meydana geldiğini hala anlamıyorsunuz (bu, nedene ek olarak).
Belki bu komut dosyası anlamada yardımcı olur
Sorunun özünü belirtiyorum ama siz kendi özel durumunuza odaklanmış durumdasınız. Önceki mesajınıza bakılırsa, her şey önceki sayfada ayrıntılı olarak açıklanmış olmasına rağmen, gecikmenin hangi durumlarda meydana geldiğini hala anlamıyorsunuz (bu, nedene ek olarak).
Gecikmenin meydana geldiği durumla ilgili görüşümü yukarıda formüle ettim.
Tekrar:
Başlangıç_zamanı, istenen TF'nin sıfır çubuğunun açılış zamanı ile TimeCurrent() arasındaki aralıktaysa, çubuklar askıda kalır. (sadece bir hipotez, ancak uygulama ile kanıtlanmıştır)
Evet, hata belirli bir durumda oluşur. Ancak özel durumlar, programlama dilinin standart yerleşik işlevlerinde olmamalıdır.
Ve senin "öz"ün öyle bir öz değil, çünkü. Sadece çok aşina olduğum Bars komutunun yardımından alıntı yapıyorsunuz. Çubuklar işlevinde gerekli olmadığı için hata kodu yoktur.
Ayrıca, bu durumda tam olarak oluşturulmuş zaman serisi dizileriyle uğraşıyoruz.
Bu, betiğimin biraz artırılmış kodundan açıkça görülüyor:
Sonuç:
Belki bu komut dosyası anlamada yardımcı olur
Komut dosyanız bu sorunu gösteriyor - asılı.
start_time - stop_time zaman aralığı haftalık çubuğun içinde bulunduğundan.
Haftalık çubuğun ötesine geçerseniz, takılma olmaz:
Daha iyi örnek için teşekkürler.
МТ4 işlevlerinde CopyHigh, CopyLow (diğerlerine bakmadım) test cihazında geçmiş yokken kritik bir hataya neden oldu. EA, H1 üzerinde test edildi ve istek M1'den geldi
1 15:14:35.410 2017.01.04 19:54:24 Access violation read to 0x0A971FE8 in 'C:\Users\Halyna\AppData\Roaming\MetaQuotes\Terminal\287469DEA9630EA94D0715D755974F1B\MQL4\Experts\____________.ex4'
3 15:14:35.465 2017.01.04 19:54:24 EA'daki kritik bir hata nedeniyle test geçişi durduruldu