Spread Profile by Hour
- Yardımcı programlar
-
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself. - Sürüm: 1.0
Spread Profile by Hour, bir sembolün spread dağılımını brokerinizin kendi tick geçmişinden sunucu gününün her saati için oluşturur ve bunu 24 çubuk olarak çizer. Bir çubuğun dolu kısmı o saatin medyan spread'idir, daha açık renkli üst kısım 90. yüzdeliğe kadar uzanır. Normalde kullandığınız stop büyüklüğünü girdiğinizde her çubuk, medyan spread'inin bu stopa oranıyla etiketlenir; böylece maliyet riskinizle aynı birimde olur.
Bu bir ölçüm aracıdır. Emir vermez, DLL veya WebRequest kullanmaz ve sizin açtığınız CSV dışa aktarımı dışında hiçbir dosya yazmaz.
Neden var: gün içi ve scalping kurallarında bir avantajın ayakta kalıp kalmayacağına çoğu zaman giriş sinyali değil spread karar verir. Terminal o anın spread'ini gösterir; çubuk geçmişi ise çubuk başına tek bir spread değeri saklar ve bu, saat içinde olanları gizler. Aynı kurallar sakin saatlerde işe yarayıp günlük rollover'da veya bir seans açılışında, sırf oradaki spread birkaç kat daha geniş olduğu için kaybettirebilir. Bu gösterge kotasyonların kendisini okur - CopyTicksRange ile son N takvim gününün her bid ve ask tick'ini - ve bunları sunucu saatine göre günün saatlerine gruplar.
Bugün hariç son N takvim günü üzerinden, işlem yaparken tablo değişmesin diye, her sunucu saati için hesapladıkları:
- Panelde her saat için puan cinsinden medyan ve 90. yüzdelik spread; CSV dışa aktarımında ise ortalama, maksimum ve her saatin arkasındaki kotasyon sayısı.
- İki örnekleme modu. Tick count: her kotasyon bir kez sayılır. Time-weighted: her kotasyon, en fazla 60 saniyeye kadar, geçerli kaldığı süre boyunca sayılır. Tick count modu hızlı piyasaları olduğundan fazla temsil eder ve hızlı piyasalarda spread'ler çoğu zaman geniştir; Time-weighted modu, o saatin rastgele bir anında hangi spread ile karşılaşacağınız sorusunu yanıtlar.
- Haftanın yalnızca bir gününde işlem yapan kurallar için Pazartesi'den Cuma'ya bir hafta günü filtresi; bu filtreyle birlikte geçmiş derinliğini artırın, çünkü 20 takvim günü aynı hafta gününden yalnızca iki ya da üç tane içerir.
- Maliyet görünümü: puan cinsinden bir stop büyüklüğü girildiğinde her çubuk, medyan spread'in bu stopa yüzdesi ile etiketlenir ve başlık, geçerli saatin medyanını ve 90. yüzdeliğini aynı birimde gösterir. Pencere her çubuğa bir etiket sığdıramayacak kadar darsa yalnızca en yüksek medyana sahip çubuk etiketini korur.
- Sembolün tick değeri ve tick büyüklüğünden hesaplanan, geçerli saatin 1,00 lot başına hesap para birimindeki medyan spread'i.
- Medyan sıralamasının iki ucundaki saatler, her uç için en fazla üç tane, başlıkta. Aynı medyanı paylaşan saatler birlikte listelenir veya özetlenir, örneğin "Cheapest: 23 hours at 6 pt"; böylece eşit değerler asla bir sıralama gibi sunulmaz; tüm saatlerin medyanı aynıysa başlık bunu belirtir.
- Geçerli sunucu saati vurgulanır ve canlı spread çubukların üzerinden geçen kesikli bir çizgi olarak çizilir.
- Saat başına tablonun her hesaplamadan sonra yazılan, UTF-8 biçiminde MQL5\Files\SpreadProfile_<symbol>_<yyyymmdd>.csv dosyasına isteğe bağlı CSV dışa aktarımı.
Tick geçmişini nasıl ele aldığı; sayılara güvenilip güvenilemeyeceğine karar veren kısım budur: her zamanlayıcı adımında bir gün yüklenir ve hemen serbest bırakılır, böylece günde 100.000'den fazla tick olan altın veya kriptoda grafik akıcı kalır. Terminalin hâlâ indirmekte olduğu bir gün birkaç saniye boyunca yeniden denenir ve tick'leri kendi M1 çubuklarını kapsamayan bir gün kullanılmadan önce yeniden denenir. Günler en yeniden geriye doğru okunur. Art arda üç işlem günü hiç tick döndürmezse (hafta günü filtresiyle, o hafta gününün art arda üç günü) veya art arda on gün ne tick ne de M1 çubuğu içerirse, bu günler bir duraklamadan sonra ikinci kez okunur; hâlâ boşlarsa yükleme durur ve başlık fiilen kullanılan en eski günün tarihini gösterir; brokerin tick deposunda bu uzunlukta bir boşluk da yüklemeyi aynı şekilde sonlandırır. Başlık ayrıca kısmi olarak kullanılan günleri, yani tick'leri son M1 çubuğuna ulaşmayan günleri, ve kullanılamayan günleri, yani M1 çubukları olup tick'i olmayan günleri sayar. Hiç tick geçmişi olmayan bir sembol, boş bir panel çizmek yerine bunu yaklaşık yirmi saniye içinde bildirir. Günlüğe her hesaplama için bir özet satırı - kullanılan günler, okunan tick'ler, doldurulan saatler - ve dışa aktarma açıkken CSV dosyasını adlandıran bir satır daha yazılır.
Panel nasıl okunur. Her çubuk, sunucu saatine göre günün bir saatidir. Dolu kısım medyandır: kotasyonların yarısının, ya da Time-weighted modunda sürenin yarısının, spread'i bu değere eşit veya bunun altındaydı. Daha açık renkli üst kısım 90. yüzdeliktir: her on kotasyondan biri bundan daha genişti. Ekran görüntülerindeki ölçümler bir demo hesapta, 17'sinde tick bulunan 20 takvim günü üzerinden alınmıştır:
- EURUSD, Tick count, 50 puanlık stop: medyan, 24 saatin 23'ünde 6 puandır. Sunucu saatiyle 21:00'de, yani günlük rollover'da, 90. yüzdelik 58 iken medyan 34 puandır. Bu, günün büyük bölümünde stopun %12'si, o tek saatte ise %68'idir.
- GBPUSD, Time-weighted, stop girilmemiş: 23 saatte 7 puan, 21:00'de medyan 46 ve 90. yüzdelik 94. Tick count modunda aynı saat 54 ve 100 gösterir, çünkü kotasyonlar spread'in geniş olduğu rollover civarında yoğunlaşır.
- XAUUSD, Tick count, 1500 puanlık stop: veri olan her saatte medyan 182 puandır; bu, stopun %12'si ve 1,00 lot başına 18,20 USD'dir, bu yüzden başlık eşit değerleri sıralamak yerine bunu belirtir. 21:00'deki günlük ara, minimum tick sayısından daha az tick içerir ve tire olarak gösterilir.
Pratik kullanım, saatlerle ilgili bir karardır: sisteminiz medyan spread'in stopunuzun büyük bir kısmını oluşturduğu bir saatte işlem yapıyorsa, ya o saati atlayın, ya stopu genişletin ya da beklenen hareketin bunu karşıladığını kontrol edin. 90. yüzdelik, kötü ama nadir olmayan bir emir gerçekleşmesinin neye benzediğini gösterir.
Bağımsız doğrulama. Saat başına istatistikler aynı ham tick'lerden ayrı bir Python uygulamasıyla yeniden hesaplandı. Medyan, 90. yüzdelik, ortalama, maksimum ve tick sayısı her iki örnekleme modunda da her saat için eşleşti; örneğin 10.692 tick ile EURUSD 20:00 ve 8.097 tick ile 21:00, ayrıca her iki modda GBPUSD 21:00. Aynı makinede yükleme testleri: 20 günlük XAUUSD, 4,29 milyon tick, 1 ila 3 saniyede; Pazartesilere filtrelenmiş 60 gün, 2,60 milyon tick, 1,3 saniyede; 365 günlük EURUSD, tick bulunan 232 gün üzerinde 9,37 milyon tick, tick geçmişi başlamadan önceki günlerin ikinci okuması dahil yaklaşık 30 saniyede. Sizin süreleriniz brokerinizin tick yoğunluğuna ve tick'lerin zaten diskte olup olmadığına bağlıdır.
Giriş parametreleri: takvim günü cinsinden geçmiş derinliği (1 ile 365 arası, varsayılan 20), örnekleme modu, hafta günü filtresi, taşma dilimiyle birlikte puan cinsinden histogram aralığı, bir saatin gösterilmesi için minimum tick sayısı, puan cinsinden stop büyüklüğü (0 yüzde etiketlerini kapatır), pencere yüksekliği, None bırakıldığında dördü otomatik olarak türetilen yedi renk (arka plan grafikten, metin ve ızgara bu arka plandan, 90. yüzdelik üst kısmı çubuk renginden), yazı tipi boyutu ve CSV anahtarı. Her giriş parametresi terminalde kendi yorumuyla belgelenmiştir.
Notlar ve sınırlar. Tick geçmişinin derinliği brokerinize ve terminalin daha önce indirdiklerine bağlıdır. Uzun bir derinlikle ilk çalıştırmada terminal hâlâ tick indiriyor olabilir; hâlâ gelmekte olan bir gün birkaç saniye yeniden denenir, ardından kısmi olarak kullanılır veya atlanır; bu nedenle yükleme erken durursa, indirme bittikten sonra göstergeyi yeniden ekleyin - ikinci çalıştırma diskten okur. Tüm saatler sunucu saatidir, bu yüzden rollover gibi bir olay yaz ve kış saati arasında bir sunucu saati kayabilir ve geçişi kapsayan bir geçmiş dönemi onu iki komşu saate bölünmüş olarak gösterir. Demo ve gerçek hesaplar ile standard, raw ve zero hesap türleri aynı sembol için çok farklı spread'lere sahip olabilir - işlem yaptığınız hesapta ölçün. Spread geçmişi gelecekteki spread'leri öngörmez: haberler, tatiller ve düşük likidite burada gösterilen 90. yüzdeliğin çok üzerinde spread'ler üretebilir. Lot başına maliyet güncel tick değerini kullanır; bu değer çapraz paritelerde döviz kuruyla birlikte değişir. Profil, her yeni sunucu gününde bir kez ve giriş parametreleri, sembol veya zaman dilimi değiştiğinde yeniden hesaplanır. Gösterge ayrı bir pencerede açılır ve bir grafikte, her biri kendi penceresinde olmak üzere birkaç kopya çalışabilir.
