Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Twitter üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Göstergeler

Economic Calendar Monitor and Cache for Backtesting on History - MetaTrader 5 için gösterge

Görüntülemeler:
70
Derecelendirme:
(9)
Yayınlandı:
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
Uzun lafın kısası: MetaTrader 5'in yerleşik ekonomik takvimi, geçmiş fiyat teklifleriyle (tamamen) senkronize değildir.

Alıntılar, ilgili her bir çubuğun oluşumu sırasında sunucuda geçerli olan zaman dilimlerine uygun olarak zaman damgalarıyla işaretlenir.

Çubuklar oluşturulduktan sonra zaman damgaları da dahil olmak üzere değişmeden kalırlar. Öte yandan, ekonomik takvim, sunucunun mevcut saat dilimine bağlı olaylar (geçmiş, şimdiki ve gelecek) hakkında bilgi sağlar. Birçok broker, gün ışığından yararlanma modunun açılıp kapatılması da dahil olmak üzere belirli bir saat dilimi programına bağlı kaldığından, geçmiş olayların zaman damgaları, her yılın yaklaşık yarısı için ilişkili çubuklara göre 1 saat kayabilir.

Ayrıca, aracı kurumlar bazen saat dilimlerini sadece DST'yi değiştirmekten daha radikal bir şekilde değiştirirler. Bu durumda tarihsel kotasyonlar, başlangıçta üzerlerinde meydana gelen ekonomik olayların zamanına göre birkaç saat sola veya sağa kaydırılmış gibi görünebilir, ancak artık takvim tarafından sunucunun güncellenmiş saat diliminde rapor edilmektedir.

Haberlerin kendi DST programlarına sahip farklı ülkelerden geldiği ve sunucunuzun başka bir programa sahip bir bölgede bulunabileceği dikkate alındığında, haber bültenlerinin zamanı grafiklerde görsel olarak daha da tuhaf bir şekilde ileri geri "atlayabilir" (örneğin, ilkbaharda ve sonbaharda birkaç hafta boyunca).

Tüm bunlar çevrimiçi ortamda çok önemli görünmüyor, ancak ya haber tabanlı bir stratejiyi test etmek istiyorsak?

Evet, takvimin MetaTrader test cihazında yerel olarak desteklenmediğini söyleyebilirsiniz, ancak birçok tüccar haber ticareti yapmayı sever ve bunu yapmayan herkes, haberler sırasında çılgına dönmeden önce piyasadan uzaklaşmak için haberleri takip etmelidir. Bu yüzden takvim ile geriye dönük test yapmak önemlidir. Bu nedenle takvimi harici bir depolama alanına (dosya, veritabanı) aktarmak ve ardından test cihazına aktarmak çok mantıklıdır. Takvim içinde test deneyimi için bu tür arşivleme araçlarından biri algotrading kitabında sunulmuştur.

Ve burada tarihsel alıntıların tarihsel olaylarla senkronizasyonunun bozulması sorunuyla karşılaşıyoruz. Basitlik adına bu sorun kitapta çözülmeden bırakılmıştı.

Şimdi CalendarCache.mqh 'nin genişletilmiş versiyonu ve CalendarMonitorCachedTZ.mq5 vitrin göstergesi sayesinde çözüldü. Bu, kitaptaki CalendarMonitorCached.mq5 'in sadece biraz değiştirilmiş bir versiyonudur.

Gösterge, haber olaylarını izler ve grafik üzerindeki bir tabloyu geçmiş ve gelecekteki birkaç olayla dinamik olarak günceller.

Zaman düzeltmesiyle ilgili tüm işler perde arkasında yapılır - diğer genel kütüphane TimeServerDST.mqh'de. Zaman düzeltmesinin nasıl çalıştığını daha iyi anlamak içinCalendarCSVForDates.mq5 komutdosyası kullanılabilir ve CSV dosyaları düzeltmeli ve düzeltmesiz olarakyan yana karşılaştırılabilir.

Ve işte lib'in her iki programın kaynak kodlarına nasıl gömüldüğü - komut dosyası ve bu gösterge.

#include <TimeServerDST.mqh> // Takvim önbelleğinden önce dahil edilmesi zaman dilimi düzeltme desteğini etkinleştirir
#include <MQL5Book/CalendarFilterCached.mqh>
#include <MQL5Book/CalendarCache.mqh>

Orijinal göstergede olduğu gibi, yazma veya okuma için bir cal-dosyası adı sağlayabileceğiniz CalendarCacheFile dize girişi vardır.

Gösterge, boş CalendarCacheFile ile çevrimiçi bir grafiğe eklendiğinde, anında yerleşik takvimle çalışır.

Gösterge CalendarCacheFile 'da belirli bir adla yürütüldüğünde ve dosya mevcut olmadığında, gösterge takvim kayıtlarını önbellek dosyasına aktarır (dosyayı oluşturur) ve çıkar. Bu, zaman damgalarının düzeltilmesi gerektiği / düzeltilebileceği aşamadır (aşağıdaki FixCachedTimesBySymbolHistory bölümüne bakın).

Gösterge CalendarCacheFile içinde mevcut bir önbellek dosyasının adıyla çalıştırıldığında, önbelleği yükler ve bu kopyayla yerleşik takvimle aynı şekilde çalışır. Bu özellikle test kullanıcıları için kullanışlıdır.

Test cihazındaki Takvim İzleyicisi olayları önbellekten okur

Lütfen, test edenin ek dosyalar belirtmesi gerektiğini unutmayın, bizim durumumuzda - hazırlanan çevrimiçi cal dosyası, #property tester_file yönergesinde VEYA cal dosyasını ortak klasör C:/Users/<User>/AppData/Roaming/MetaQuotes/Terminal/Common/ içine yerleştirmelisiniz.

Elbette önbellek, geri testler ve optimizasyonlar sırasında bir EA'ya da yüklenebilir.

FixCachedTimesBySymbolHistory giriş dizesi aşağıdaki şekilde işlenir.

Boşsa, gösterge önbelleği zaman düzeltmeleri olmadan kaydeder.

Dışa aktarma sırasında zaman düzeltmelerini etkinleştirmek için, sunucunun geçmiş zaman dilimlerinin ampirik tespiti için kullanılacak bir sembol belirtmelisiniz. Tercihen "XAUUSD" veya "EURUSD" olmak üzere H1 kotasyonlarının geçmişine dayalı olarak çalışır.

Bu girdinin yardımıyla, göstergenin yeni sürümüne yalnızca birkaç satır eklenir:

         if(StringLen(FixCachedTimesBySymbolHistory))
            cache[].adjustTZonHistory(FixCachedTimesBySymbolHistory, true);

adjustTZonHistory yöntemi, zaman damgası ayarlamaları için CalendarCache sınıfına özel olarak eklenmiştir ve uygulaması TimeServerDST.mqh'nin dahili özelliklerini kullanır.

Yöntem yalnızca çevrimiçi olarak çağrılmalıdır (test cihazında değil).

Normalde yöntem, yerleşik takvimden doldurulan önbellek nesnelerinde, doldurulduktan hemen sonra çağrılmalıdır. Aksi takdirde, önbellek bir cal dosyasından yüklenmişse veya yöntem daha önce çağrılmışsa, önbellek içeriği zaten ayarlanmış olabilir. O zaman düzeltme üzerine düzeltme uygularsınız ve yanlış zaman damgaları elde edersiniz.

İkinci parametre(true) yönteme, uygulanan değişikliklerin sınırlarını günlüğe yazması talimatını verir. Bunun gibi bir şey:

Time fix-up started at 2021.07.19 00:30:00
2021.07.19 00:30:00: 148786 -10800 diff=-3600
2021.11.08 01:50:00: 135918 -7200 OK
2022.03.14 04:30:00: 161085 -10800 diff=-3600
2022.11.07 04:00:00: 165962 -7200 OK
2023.03.13 01:50:00: 168500 -10800 diff=-3600
2023.11.06 01:50:00: 169270 -7200 OK
2024.03.11 01:50:00: 181258 -10800 diff=-3600
2024.11.04 02:30:00: 208469 -7200 OK

Her satır, yeni tutarsızlığın tespit edildiği bir olayın zamanını ve kimliğini, olaydaki sunucu zaman ofsetini ve takvim önbelleğe alma anında sunucu zamanındaki önyargıyı ortadan kaldırmak için sonraki tüm zaman damgalarına hangi farkın uygulanması gerektiğini içerir.

Ekteki mqh dosyaları (CalendarFilter.mqh, CalendarCache.mqh, QuickSortStructT(Ref).mqh) kitaptaki orijinal sürümlerine kıyasla hata düzeltmeleri ve iyileştirmeler içermektedir.


Güncellemeler

11.11.2024 - CalendarFilter.mqh, CalendarCache.mqh dosyalarında küçük hata düzeltmeleri ve güncellemeler;

22.11.2024 - CalendarCache.mqh'de küçük hata düzeltmeleri ve iyileştirmeler.



MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/53393

BarTimer BarTimer

Mevcut çubuğun başlangıcına ve sonuna göre zaman içindeki mevcut konum görüntülenir, ayrıca çubuğun başlangıcından itibaren geçen sürenin değeri tüm çubuğun süresinin bir yüzdesi olarak görüntülenir. Bir alım satım kararı verme anını kontrol etmek için kullanışlıdır.

Candles_Smoothed Candles_Smoothed

Ortalama alınarak dönüştürülmüş mum çubuğu grafiği.

Extreme highs and lows with tick prices Extreme highs and lows with tick prices

Aşırı alış ve satış fiyatlarıyla birlikte aşırı yüksek ve düşük fiyatların (OHLC) işaretlenmesi

Kitle İndeksi (MI) Kitle İndeksi (MI)

Kitle Endeksi, maksimum ve minimum fiyatlar arasındaki aralığın genişliğindeki değişikliklere dayalı olarak trend dönüşlerini belirlemek üzere tasarlanmıştır.