[SERVICE DESK] Zamanlayıcıda kıdemli TF'nin zamanı alınırken hata oluştu! - sayfa 8
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
3. İlginç bir analiz anı, CopyClose()'un döndürdüğü şeydir, kendim kontrol ettim, eğer istenen TF için .hst dosyası yoksa, CopyClose() asla 2048'den fazla döndürmez - yani. bu indirilebilecek maksimum değer mi?
Numara. 2048, istemcide bulunmadığında sunucudan indirilen verilerin bir kısmıdır.
Numara. 2048, istemcide bulunmadığında sunucudan indirilen verilerin bir kısmıdır.
hmm, uzun süredir MQL yapıyorum gibi görünüyor, ama yine de bu benim için beklenmedik bir şey
Tamam, işte yardımdan bir örnek: https://www.mql5.com/en/docs/series/timeseries_access
olduğu belirtilir:
Bir sonraki önemli kontrol, fonksiyonun çağrıldığı programın tipidir. Güncellemeye neden olan gösterge ile aynı periyoda sahip bir zaman serisini güncellemek için bir istek göndermenin oldukça istenmeyen bir durum olduğunu hatırlayın. Gösterge ile aynı sembol periyodu için veri talep edilmesinin istenmemesi, geçmiş verilerin göstergenin çalıştığı aynı iş parçacığında güncellenmesinden kaynaklanmaktadır. Bu nedenle, bir perçin olasılığı yüksektir. Kontrol etmek için MQL5InfoInteger() işlevini MQL5_PROGRAM_TYPE değiştiricisiyle birlikte kullanırız .
onlar. örneğin kendisi https://www.mql5.com/ru/code/449
MT4 göstergesine geçmiş verileri yüklemek için uygun değildir, ancak hazırlanmış bir .hst dosyası yoksa göstergenin tüm geçmişinin nasıl indirileceği, yani. göstergenin kendisi indirme geçmişini sembolle başlattı
tüm geçmişi iBars(Symbol(),PERIOD_CURRENT);
iBars() da yanlış bir değer mi üretecek? - henüz geçmiş yok, çekirdek iBar yok()
MT5'te tarih sorunsuz bir şekilde sallanıyor gibi görünüyor, sadece beklemeniz ve geçmiş verilerin durumunu kontrol etmeniz gerekiyor, ancak MT4'te?
Not: dün kod tabanında MT4 için doğru çalışan çoklu para birimi göstergeleri arıyordum, ancak kodlar taklit konusu değil, kod tabanının birçok örneğinde, göstergede geçmiş sayfalama yok
Dördünde, "ev tuşunu basılı tuttular." Başka yolu yok. Konuyu uzun süredir çalışıyorsanız, "klavyede tuğla" ifadesini hatırlamanız gerekir.
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Ücretsiz indiricimi görebilirsiniz.
Ücretsiz indiricimi görebilirsiniz.
Peki, kodunuza nasıl bakmamı önerirsiniz? Geçmişi nasıl indireceğimi biliyorum, ancak indirmeyi bir gösterge ile nasıl kontrol edeceğimi bilmiyorum
Dördünde, "ev tuşunu basılı tuttular." Başka yolu yok. Konuyu uzun süredir çalışıyorsanız, "klavyede tuğla" ifadesini hatırlamanız gerekir.
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
evet bu kodların hepsini biliyorum, daha önce kullandım, birkaç yıldır hiç MQL yapmadım, bu sene bilgilerimi yeniliyorum, geliştiricilerin MT5 ve MT4 arasında maksimum uyumluluğu büyük ölçüde sağlamasına çok şaşırdım. MQL4'ün performansını artırdı - daha önce MT4'ün projenin artık nasıl gelişmeyeceği konusunda bilgi olmasına rağmen, yalnızca hatalar düzeltilecek
ve MT4 göstergesinde tarihin otomatik yüklenmesi hakkında bilgi bulamadığıma dair bir umut vardı.
Prensip olarak, ek kontroller olmadan tüm geçmişi MT4'te indirmek istiyorsanız, xrenfix kodunu kullanmak daha kolaydır - .hst dosyasına datetime t=0 çubuğunu yazın;
Peki, kodunuza nasıl bakmamı önerirsiniz?
Sadece geçmişi otomatik olarak yüklemen gerektiğini düşündüm ...
MT4'te daha yüksek zaman dilimlerinden veri elde etme konusuna bir kez daha dönmek zorundayım. Bu sefer burada önerilen yöntemlerin işe yaramaması nedeniyle.
İşte kullanılan kod:
Bana tavsiye edildiği gibi veri sayfalama uygular:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
[SERVICE DESK] Zamanlayıcıda kıdemli TF'nin zamanı alınırken hata oluştu!
Slava , 2018.09.27 06:20
Birçok kez tartışıldı. "4066 hatası" sorgusu başına 12 sayfa
Ve OnInit'te bir istek göndermeniz ve OnCalculate'de analiz etmeniz doğru bir şekilde tavsiye edildi.
Milisaniye zamanlayıcı ne için? Eylemlerinizle istemci terminalinin normal şekilde yükselmesini engelliyorsunuz. Zamanlayıcınıza müdahale eden Windows mesajları değil, zamanlayıcınız herkese müdahale ediyor. Bir kez daha: MT4 İSTEMCİ TERMİNALİNDEKİ GÖSTERGELER ARAYÜZ AKIŞINDA ÇALIŞIYOR.
Uygulama tam olarak şudur: veri için ilk istek OnInit() içinde gerçekleşir. Ardından, ticaret sunucusuyla bağlantı kurulmasını bekliyoruz, ardından OnCalculate()'de! eski TF'lerin verilerini alıyoruz. Bugün ilk çalıştırmada sonucu alıyoruz:
Logdan da anlaşılacağı gibi, saatin ve günün saatinin hatalı değerleri alındı.
Evet, geliştiriciler ( @Slava ) fark edebilir, bana verilen tüm tavsiyeleri uygulamadım. Onlar. Başlangıçta yavaş olanı başlatmam tavsiye edilse de, hızlı zamanlayıcıyı OnInit () içinde başlatıyorum. Ancak, bu durumda, bilerek yapılır. Bir arabirim iş parçacığında hızlı bir zamanlayıcı başlatılırsa ve diğer göstergelerin verilerinin alınmasını yavaşlatabilirse, bu büyük bir sorundur. Belgelerde bununla ilgili hiçbir uyarı yok, sık sık zamanlayıcılı bir programı piyasaya kolayca koyabilirsiniz, bu bir tür "virüs" olabilir ve diğer programların "kırılmasına" neden olabilir.
Yukarıdakilerle bağlantılı olarak, ya milisaniye zamanlayıcısının çalışmasına kısıtlamalar getirmenin ya da EventSetMillisecondTimer () belgelerinde işlevi OnInit () içinde çalıştıramayacağınızı belirtmenin gerekli olduğunu düşünüyorum, böylece terminal yükselebilir. normalde başlangıçta.
Ve şimdi en ilginç olanı. Herhangi bir zamanlayıcı olmadan kod:
Ve yine de istediğiniz sonucu alamıyorsunuz. Geliştiriciler ( @Slava ) lütfen yorum yapın. Terminali birkaç eski TF'den yüklerken doğru verileri almak imkansızdır. Ön koşul, terminalin kapatıldıktan sonra bir saatten fazla kapalı kalmasıdır (çünkü saatlik çubuk verileri alıyoruz). Ve elbette, TF'deki lansman bir saatten az.
Zamanlayıcı çalışmadı.