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
Prival:
Nadiren, ancak bir enstrüman için tekliflerin uzun süre donduğu durumlar vardır (yende böyle bir durum gördüm). Ve Uzman Danışman bu çifte takılırsa, tüm kodu OnTime() içine çevirmediyseniz başınız belada demektir.
Lizar:
Böyle bir olay TimeCuurent() kullanılarak alınabilir, ancak bununla daha sonra ne yapılacağı, nasıl senkronize edileceği bir sorudur.
TimeCuurent() işlevinin bununla ne ilgisi var?
Yardım bölümünde şöyle yazıyor:
OnTick() işleyicisinde, bu fonksiyon gelen işlenmiş tikin zamanını döndürür. Diğer durumlarda (örneğin, OnInit(), OnDeinit(), OnTimer() işleyicilerindeki çağrılar vb.) bu, "Market Watch" penceresinde bulunan herhangi bir sembol için son kotasyonun geliş zamanıdır, bu pencerenin başlığında gösterilen aynı zamandır.
Özet şöyle:
OnTick() işleyicisinde, bu fonksiyon işlenmekte olan tikin varış zamanını döndürür. Diğer durumlarda (örneğin, OnInit(), OnDeinit(), OnTimer() ve benzeri işleyicilerde çağrı) bu, "Market Watch" penceresinde bulunan herhangi bir sembol için son fiyat teklifinin var ış zamanıdır, bu pencerenin başlığında gösterilen aynı zamandır.
Evet, açık. sadece OnTime'a koyarsak, zamanı dakikada bir defadan fazla güncelleyemeyiz ve mevcut OnTick()'e koyarsak, bazı çiftlerde (mults'ta) tikleri kaçırma riskiyle karşı karşıya kalırız.
Ve işleme bloğunda ne yapılacağı açıktır (çoklular için) - Yeni bir değer alırız, mevcut olanla karşılaştırırız ve yeni bir tik olup olmadığı sonucuna varırız.
Ama söyle bana, bunu neden Uzman Danışman'da yapalım?
Özet şöyle:
hata. işte yardımın söylediği şey https://www.mql5.com/tr/docs/basis/function/events
NewTick olayı, yalnızca Uzman Danışmanın grafiğine bağlı olduğu sembolde yeni bir tik alındığında Uzman Danışmanlar için oluşturulur.
Bir kez daha. Bazı sembollere asılı kalan bir Uzman Danışmandan bahsediyoruz. Olay tarafından tetiklenir
void OnTick() {}
Bu işlevin içindeyseniz ve bu çiftte bir saatten uzun süredir tik yoksa, bir saat içinde hiçbir şey yapamazsınız. Şimdiye kadar, tek çıkış yolu bunu bir zamanlayıcıda yapmaktır, enstrümana tiklerin gelmesine bakılmaksızın başlar.
Ancak bunu OnTime'a koyarsak, zamanı dakikada bir defadan fazla güncelleyemeyiz ve mevcut OnTick()'e koyarsak, bazı çiftlerin tik'lerini kaçırma riskiyle karşı karşıya kalırız (mults olarak).
Hata. https://www. mql5.com/ru/docs/basis/function/events adresindeki yardım bölümünde şöyle yazıyor.
Bir kez daha. Bazı sembollere asılı bir Uzman Danışmandan bahsediyoruz. Etkinlik tarafından başlatıldı
void OnTick() {}
Bu işlevin içindeyseniz ve bu çiftte bir saatten uzun süredir tik yoksa, bir saat içinde hiçbir şey yapamazsınız. Şimdiye kadar, tek çıkış yolu bunu zamanlayıcıda yapmaktır, enstrümana kenelerin gelmesine bakılmaksızın başlatılır.
Evet, bu https://www.mql5.com/tr/docs/basis/function/events çerçevesinde hareket edersek, şu anda gördüğümüz gibi en iyi seçeneğin OnTime olduğuna katılıyorum. Ancak bizi sadece tiklerin gelişine olan bağımlılıktan kurtaracaktır. Ve bizi tek iş parçacıklı olmaktan kurtarmayacaktır: bir enstrüman için bir sinyali işlerken, diğer enstrümanların işlenmesini kaçırma veya geciktirme riskimiz vardır. Bu, özellikle "alım satım emirlerinin işlenme süresi 2 ila 7 saniye arasında" + yeniden talepler olduğunda geçerlidir.
TimeCuurent() hakkında hatırladım çünkü İlginç, piyasa incelemesindeki tüm çiftler için gerçek zamanlı keneler hakkında konuşmaya başladı.
Çok ilginç bir makale. Tüm bunları paylaştığınız için teşekkür ederim.
Ancak, bazı açıklamalar:
Bu işlev hakkında konuşurken, diyorsunuz ki :
If you call this prototype function from one place, then we have what we need. But if we want to use this function, for example, again in another place in the same calculation loop, it will always return false, which means that there is no bar. And this will not always be true. Static variable in this case imposes an artificial limit on the number of prototype function calls.
Statik bir yerel değişkeni aynı olan global bir değişkenle değiştirdiniz ve sorununuzu çözmediniz.
Yine de, makaleniz düşünmeye itecek ve ilginç fikirler sunacak değere sahip.
Güzel makale, paylaşım için teşekkürler! Tüm bunlar çok faydalı oldu!
Her neyse, isNewBar fonksiyonunuzu aldım ve derlerken aşağıdaki mesajı atıyor:" tür dönüşümü nedeniyleolası veri kaybı ".
Bu yüzden var türlerini datetime'dan long'a bu şekilde değiştirdim:
Şimdi herhangi bir uyarı olmadan derleniyor ve iyi çalışıyor gibi görünüyor. Teşekkür ederim!