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
Web sitesi politikasını ve kullanım şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Artık son bilinen zaman bilgisine dayalı tikler olmayacak.
Milisaniyelik OnTimer, bu zamanlayıcı olayından ÖNCE tüm zamanlamaların geçmiş olmasını garanti eder. Yani, tüm semboller için zamanlamalar günceldir.
Eğer söz konusu olan, casus göstergenin bazı teknik nedenlerden dolayı "eski" tik'i geciktirip daha yeni bir tik'ten sonra başka bir enstrümana gönderebilmesi ise, bu muhtemelen gerçekleşebilir. Aksi takdirde, kodda doğrudan bir sorun görmüyorum.
Zamanlayıcının, yeni "olay"dan (zaman biriminin sayılmasından) ÖNCE tüm tiklerin geçmesini daha fazla garanti ettiğini sanmıyorum. Zamanlayıcı yerel saatle çalışırken, tiklerdeki zaman damgaları sunucu saatini içerir. Bu nedenle, araçların senkronizasyonu için zamanlayıcıya güvenmemek daha iyidir.
Peki, senkronizasyonun karmaşıklığı nedeniyle tikler için bu kabul edilebilir; ancak milisaniyelik bir zaman aralığı belirleyip tikleri zamana göre ayarlayabiliriz.
Ancak açılış fiyatları konusunda da durum aynı; oysa tüm sembollerde açılış saati aynı.
Ve bu davranış nedeniyle bazı sistemleri düzgün bir şekilde test etmek imkansız hale geliyor.
Sorunun gösterimi.
Ekran görüntüsünde MetaQuotes-Demo'da durumu yeniden canlandırmak için gerekli tüm veriler yer almaktadır. OnTick kullanıldığında tiklerin senkronize olmadığı, OnTimer (son derece yavaş) kullanıldığında ise senkronize olduğu açıkça görülmektedir.
OnTick aracılığıyla tikler senkronize edilmezken, OnTimer aracılığıyla (çok yavaş) senkronize edilir.
Görünüşe göre, senkronize modda hesaplamaları hızlandırmanın tek yolu, EAToMath benzeri bir matematik modudur.
Ya da tek geçişe ait bu verileri önceden bir dosyaya kaydetmek.
Ve kendi danışmanınızda, OnTick'te senkronizasyon için bu dosyanın verilerini kullanmak. Hızlı ve doğru bir şekilde çalışacaktır.
Sorunun gösterimi.
Ekran görüntüsünde, MetaQuotes-Demo'da sorunu yeniden canlandırmak için gerekli tüm veriler yer almaktadır. OnTick kullanıldığında tiklerin senkronize olmadığı, OnTimer (son derece yavaş) kullanıldığında ise senkronize olduğu açıkça görülmektedir.
Peki, siz == operatörüyle pozisyona giriş koşulu içeren kodunuzu kullanmışsınız. Yukarıda da belirttiğim gibi, koşul kesinlikle > olmalı, “eşittir” olmamalıdır. 1 Ekim 2025 01:00:00.081 tarihine kadar bilinen en son fiyatlara göre tüm enstrümanlarda senkronize işlemler gerçekleştirmek için, bu tarihten önce tik izlemeye başlamalısınız, yani örnek sabit olarak örneğin >1759280400080 değerini referans sabit olarak almalısınız. Her algoritma için mantığı değiştirmeniz gerekir; sadece bir işlemci türünü diğeriyle değiştirmek yeterli olmayacaktır.
Not: Senkronizasyon derken, bilinen en son fiyatlara göre işlem yapmayı kastediyorum. Milisaniye düzeyinde eşzamanlılık için elbette ek kontroller gerekir, ancak bu tür durumların (farklı enstrümanların tiklerinin milisaniye düzeyinde çakışması) olasılığı düşüktür; bu da potansiyel sinyallerin kaçırılması anlamına gelir. Böyle bir eşzamanlılığın pratikte bir faydası olduğundan emin değilim.
01.10.2025 saat 01:00:00'a kadar bilinen en son fiyatlarla senkronize işlemler gerçekleştirmek için.081'e kadar tüm enstrümanlarda senkronize işlemler gerçekleştirmek için, bu tarihten önce tik izlemeye başlamanız gerekir; yani, örneğin >1759280400080 gibi bir değeri referans sabiti olarak almanız gerekir.
Senkronizasyonun en basit yolu, kullanılan karakterlerin tik sürelerinden bir küme oluşturmaktır.
Hareket halindeyken, tek geçişte senkronizasyon sağlamak zordur.
Zorluk, gecikmenin belirsizliğinden kaynaklanıyor. Hangi sembolün öncü olacağı bilinmiyor.
Koddaki önerinizi incelemeye hazırım.
Tam kapsamlı bir test senaryosu hazırlamak için pratik bir görevi anlamam gerekiyor: sadece milisaniye hassasiyetinde zamanları çakışan tiklere göre mi işlem yapıyoruz?
Önceden bilinen bir anda, tüm enstrümanlarda senkronize tiklerin olduğu tek bir işlemden oluşan yapay bir örnek için, yapay bir optimal algoritma tasarlayabiliriz, ama ne gereği var ki?
Ancak açılış fiyatları da aynı, her ne kadar tüm hisse senetlerinin açılış saatleri aynı olsa da.
Sorunu biraz daha netleştirmemiz gerekiyor. Açılış fiyatları söz konusu olduğunda, algoritma tüm sembollerin çubuklarının mevcut olmasını gerektiriyorsa, tüm sembollerde iTime(,,0) değerlerinin aynı olana kadar bekleriz. Bu yaklaşımda çubuklar için genellikle mantıksal bir sorun olmaz, çünkü çubuklar (M1 bile) nadiren eksik olur; ancak saniye ve daha küçük zaman aralıklarında senkronizasyon bozuklukları sık görülebilir. Böyle durumlarda ne yapmalı?
Uygulamada, senkronizasyon olarak, tik zaman damgalarının tam olarak eşleşmesini değil, belirli bir zaman aşımı sınırından daha eski olmayan herhangi bir fiyatın varlığını dikkate almak gerektiğini düşünüyorum.
Görevi biraz daha netleştirmemiz gerekiyor. Açılış fiyatlarına göre, algoritma tüm sembollerin çubuklarının mevcut olmasını gerektiriyorsa, tüm sembollerde iTime(,,0) değerlerinin aynı olması için bekleriz. Bu yaklaşımda çubuklar için genellikle mantıksal bir sorun yoktur, çünkü çubuklar (M1 dahil) nadiren eksik olur.
Burada açılış fiyatlarına göre çalışan test modundan bahsediliyor.
saniye ve daha küçük zaman aralıklarında senkronizasyon hataları sıkça görülebilir. Böyle durumlarda ne yapılmalı?
Bilinen son değeri girmek.