![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
İngilizceden.
veri -- veri
besleme -- besleme
datafeed -- veri kaynağı ("kaynak" kelimesi tam olarak anlamı iletmese de)
besleyici -- besleyici, besleyici, yükleme aygıtı
О датафидах. Сколько встречал этот термин, сложилось ощущение, что этим словом обозначают источник данных (котировок). Буквально "заполнитель данных". Когда речь идет о собственных инструментах, понимаю так, что мы сможем вычислять котировки, например, никем не котируемого MXNRUB по известным курсам MXNUSD и USDRUB, выгруженным из терминала в .csv формат, и легализовать для терминала новые котировки, указав файл .csv как новый датафид . Возможно, будет реализовано и более изящное решение, без выгрузки в файлы, путем онлайновых операций */ над тиками (MXNRUB = MXNUSD * USDRUB). И это будет новый датафид.
Bir tartışma, hata raporu veya buna benzer bir bağlantınız yok mu? Ya da öyleymiş gibi bir his var ama şimdi kontrol etmediler mi?
Hatırladığım kadarıyla OnCalculate'de toplanan keneler, CopyTix aracılığıyla istenenlerle çakışıyordu.
Şimdi özellikle kontrol ettim ... beklendiği gibi, bir tür çöp var ama beklediğimden değil :)
0 bayraklı keneler OnBookEvent() aracılığıyla yakalanır...
Ve işte görmeyi beklediğim şey:
Gördüğünüz gibi , SymbolInfoTick() işlevi kullanılarak OnCalculate() işlevine yapılan her çağrıda son onay işareti istendiğinde, CopyTicks() tarafından döndürülen bazı onay işaretleri atlanır.Kontrol edilecek kod:
Kontrol edilecek kod:
Emin olmak için (OnBookEvent ve CopyTicks'i test etmemek için, ancak planlandığı gibi OnCalculate ), OnCalculate'i çağırırken yalnızca kenelerin kaydını bir dosyaya bırakırdım.
Sonra aynı dosyayı bir komut dosyasıyla oluşturup CopyTicks aracılığıyla keneler alırdım. Fark daha net olabilirdi ve OnCalculate'de kenelerin atlandığını veya CopyTicks'in yanlış çalıştığını gösterirdi.
Emin olmak için (OnBookEvent ve CopyTicks'i test etmemek, ancak planlandığı gibi OnCalculate'i test etmek için), OnCalculate'i çağırırken yalnızca kenelerin kaydını bir dosyaya bırakırdım.
Sonra aynı dosyayı bir komut dosyasıyla oluşturup CopyTicks aracılığıyla keneler alırdım. Fark daha net olabilirdi ve OnCalculate'de kenelerin atlandığını veya CopyTicks'in yanlış çalıştığını gösterirdi.
Bu kadar basit bir hesapla daha fazla uğraşmaya gerek görmüyorum. İki çağrının somut bir karşılaştırması vardır: SymbolInfoTick() ve CopyTicks(). Ve tüm SymbolInfoTick() çağrıları açıkça gösterilir. Ve CopyTicks()'in SymbolInfoTick()'ten OnCalculate()'den istendiğinde alınmayan bir onay döndürdüğü görülebilir. Ve hatanın iki nedeni olabilir: 1. Ya OnCalculate() keneleri atlar ya da 2. SymbolInfoTick() bir yerde olması gerektiği gibi olmayan bir şey döndürür.
Evet, bu, toplanması 30 saniye süren günlüğün bir parçası... bu yüzden kaçırılan kenelerin sayısını hayal edin.
Servis masası ile diyalogumuz:
Kaybolmamak için bir göz atın: https://www.mql5.com/ru/forum/190129/page8#comment_5081300 ve aşağıdaki 2 gönderi.
Göstergeden CopyTicks, göstergenin OnCalculate'de almadığı bir onay işareti verir (ne önce ne de sonra).
Her onayda OnCalculate çağrılır.
Keneler ayrı bir iplikte tabana eklenir. Yani asenkron olarak. CopyTicks ile OnCalculate adlı aynı onay işaretini alacağınız bir gerçek değil.
Bu, onunla alakalı değil.
CopyTicks'i kullanarak, OnCalculate'de olmayan bir tik alabilirsiniz (bunu OnCalculate'de, zamanı kaçırılandan daha büyük olan bir tik üzerinde öğreneceğiz).
Günlüklere bakın.
sadece bununla ilgili
Bir paket kene geldi. 2 iş parçacığı bu toplu işi işlemeye başladı - bir döngüdeki bir iş parçacığı, toplu iş içindeki her onay için OnCalculate'i başlatır; başka bir iplik tüm paketi bir tik tabanına yerleştirir. Bu 2 iş parçacığı hiçbir şekilde birbiriyle senkronize değildir ve hangi iş parçacığının bir demet keneyi daha hızlı işleyeceği bilinmemektedir.
Ancak paketteki her onay OnCalculate tarafından işlenmelidir. Ve bu olmuyor.
Bu sefer kene yok. Daha kısa süreli bir kene ve daha uzun süreli bir kene vardır. Ve aralarında OnCalculate araması yoktu.
organik gübre
Ancak paketteki her onay OnCalculate tarafından işlenmelidir. Ve bu olmuyor.
Bu sefer kene yok. Daha kısa süreli bir kene ve daha uzun süreli bir kene vardır. Ve aralarında OnCalculate araması yoktu.
Paketteki her onay OnCalculate'de işlenir. Geçiş yok. Döngü bu şekilde yazılmıştır.
OnCalculate'de hangi işaretin işlendiğini bulmak için SymbolInfoTick'i kullanın - burada her şey açıktır. Bir sembol hakkındaki bilgilere bir onay işareti uygulanır, ardından o sembolün tüm göstergeleri aynı iş parçacığında çağrılır.
Lütfen bağlantıdaki günlüğe bakın.
OnCalculate'den SymbolInfoTick, CopyTicks'ten alınabilecek onay işaretini görmez.
bu yüzden yazdım
Tam olarak https://www.mql5.com/ru/forum/190129/page8#comment_5082755'te önerdiğiniz gibi yapmamız gerekiyor.
Emin olmak için (OnBookEvent ve CopyTicks'i test etmemek için, ancak planlandığı gibi OnCalculate'i test etmek için), OnCalculate'i çağırırken yalnızca kenelerin kaydını bir dosyaya bırakırdım.
Sonra aynı dosyayı bir komut dosyasıyla oluşturur ve CopyTicks aracılığıyla onay işaretleri alırdım. Fark daha net olabilirdi ve OnCalculate'de kenelerin atlandığını veya CopyTicks'in yanlış çalıştığını gösterirdi.
CopyTicks'in doğruluğunu bir kerede tam olarak bu şekilde kontrol ettik. Test komut dosyaları ve göstergeler kaldı, onları tekrar kontrol edeceğiz
HER kene üzerinde oluşturulur. Bu nedenle, göstergeler için bir onay sırası vardır. Belirli bir miktara ulaşırsa, loga göstergenin çok yavaş olduğuna dair bir uyarı gönderilir.
Çubukların kendileri doğası gereği göstergelerdir ve Hesaplama olayları temel alınarak oluşturulur. Bu nedenle, eğer TF M1 hala 10:15:000.020 ise ve 50 ms için bir burst gelirse, o zaman içindeki ilk tik hala 10:14:59.970'dir. Ve tüm göstergeler ilk olarak bu Hesaplama olayında çağrılır - önce zaman serisi göstergesi, ardından bu zaman serisine sahip özel göstergeler. Onlar. bu senaryoda, 10:15 bar henüz sıfır olarak oluşturulmamıştır. Ve sıfır - 10:14.
Ayrıca, paket Hesaplama etkinlikleri aracılığıyla gevşemeye başladığında, 10:15 çubuğu da görünür. Detaylı görünüyor.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri
fxsaber , 2017.03.29 22:41
Sonuç olarak, bir EA'nın henüz oluşturulmamış bir çubuk işareti alması oldukça normaldir. Ama bu o kadar ince bir an ki, özel olarak çoğaltılmış bile - denemek zorundasınız. Genel olarak, pratikten daha teorik.
PS Hız paranoyak ise, göstergelerin (ve tabii ki çubukların) kullanılması bir seçenek değildir. Her şey danışmanda.
Servis masası ile diyalogumuz:
Servis masası maalesef repertuarında. Konu tartışmaya geldiyse link atmalarına gerek yok. Ve belirli bir örnek vermek gerekirse, parmaklarda. Bunun hakkında hiç konuşmuyorlar. Sadece SymbolInfoTick() öğesinin mevcut kontrol edilen onay işaretini döndürdüğünü söylüyorlar ve o zamandan beri TEORİDE OnCalculate() her tiki işler - çıktının her tik olması gerektiği ortaya çıkar. Ve CopyTicks() bize bunun tersini söyler. Ama CopyTicks()'i izlemeyin diyorlar :). Ayrıca o yılın sonunda CopyTicks()'i düzeltirken bana iki akıştan bahsettiler. Sadece burada mesele onunla ilgili değil (yine de belki onunla da ilgili, xs).
OnBookEvent()'ten alındığında 0 bayraklı keneler hakkında soru sordular mı?