Yazara teşekkürler, ilgili bir makale. Ben de bu konu üzerinde düşünüyordum ama makaleye ulaşamadım.
Yazar, hangi enstrümanların neyi çalıştırdığını dikkatlice izlemeniz gerektiği konusunda uyarıyor. Herhangi bir çift üzerinde çalıştırılabilen Uzman Danışmanlar yazmanın ışığında, bu biraz zor. EA'nın hangi çift üzerinde çalıştığını takip etmeniz ve paralel akış çiftlerini ayarlamanız gerekecektir.
Bu bağlamda, bir soru (yazara değil, daha çok MQ geliştiricilerine): özel araçlar tanıtmak mümkün mü?
Bu şekilde, paralelleştirilmiş hesaplamalar için boş grafikleri oluşturmaktan başlayıp kendi oluşturduğumuz tik grafiklerini oluşturmaya kadar birçok görevi çözebiliriz.
Veri aktarım tamponuna gelince, size global bir yapı oluşturmanızı ve farklı veri türlerini yapıya göre aktarmanızı tavsiye edebilirim. Deneyimlerimden biliyorum ki, hesaplamaların sonucunu bir dizi şeklinde döndürmek her zaman uygun değildir, genellikle bazı sayaçları izlemeniz gerekir ve isimleri karıştırmamak için her şeyi bir yapı olarak aktarmak ve değişkenlere yapının üyeleri olarak atıfta bulunmak daha kolaydır. Bu arada, aynı yapı dizileri de içerebilir.
- www.mql5.com
Bu bağlamda, bir soru (yazara değil, daha çok MQ geliştiricilerine): özel araçlar tanıtmak mümkün mü?
Belki de burada özel araçlar hakkında daha önce ifade edilen fikri tekrarlayacağım, ancak eklemek istiyorum....
Şimdi bir Uzman Danışman (gösterge, komut dosyası) yalnızca belirli bir sembol üzerinde başlatılır. Diğer sembollerin mevcut verilerine erişimi vardır, ancak OnTick olayı yalnızca Uzman Danışmanın grafiğinde başlatıldığı ana sembol için oluşturulur.
Belki de bir eklenti gibi kendi"özel aracınızı" oluşturma olasılığını tanıtmak mantıklı olacaktır. Uzman Danışmanlar üzerinde bir üst yapı gibidir ve birkaç sembolden tik alma ve işleme yeteneğine sahiptir, sonuçları kendi iş parçacığında belirli bir sembolle çalışan programlara (programın bölümleri veya Uzman Danışmanlar, göstergeler) aktarır. Bu, "çoklu para biriminin" yaratılmasını büyük ölçüde kolaylaştırdı ve teşvik etti. Ve nesne programlama kavramının kendisi buna iter. Birkaç sembolle çalışıyorsanız neden bir Uzman Danışmanı belirli bir sembole bağlayasınız?
Not: Ya da SymbolInf... fonksiyonlarına "bu sembol için yeni bir tik geldi" olayı gibi bir şey eklemek iyi olurdu.
Artık Uzman Danışman (gösterge, komut dosyası) yalnızca belirli bir sembol üzerinde başlatılır. Diğer sembollerin mevcut verilerine erişimi vardır, ancak OnTick olayı yalnızca grafiğinde Uzman Danışmanın başlatıldığı ana sembol için oluşturulur.
Geliştiricilerin koltuk değneğini neden tekrarladığını anlamak zor. Sonuçta, MQL5 mimarisi geliştirilirken, onTick 'in herhangi bir imzalı sembolün herhangi bir kenesi için tetiklendiği çok güçlü bir API zaten vardı.
Genel olarak, neden böyle bir mimari seçtiklerini ve mimari açısından çok yetkin olan mevcut API'den bu kadar az şey aldıklarını anlamıyorum.
MQL5 geliştiricileri sanki tekerleği yeniden icat ediyorlarmış gibi davranıyorlar: "bu özelliği düşüneceğiz", "evet, haklısınız, ekleyeceğiz", vb.
Mimari üzerinde çalışmak için bir yıldan fazla zaman harcandığından birkaç kez bahsedilmişti. Yani neden başka türlü değil de bu şekilde yapmaya karar verdiklerine dair bazı argümanlar var.
Not: Belki de bunun nedeni, MetaTrader geliştiricilerinin aracılık ve ticaret konusunda çok az deneyime sahip olmaları, ancak platform yazma konusunda büyük bir deneyime sahip olmaları gerçeğinde yatmaktadır. Aksine, diğer geliştiriciler gerçek aracılık ve piyasa ticaretinde büyük deneyime sahipti.
Not: Spekülasyonları değil, düşüncelerimi yazdım. Eleştirmek her zaman yaratmaktan daha kolaydır. Geliştiriciler, bariz hatalarına rağmen, Saygıyı hak ediyorlar.
Belki de Uzman Danışmanlar üzerinde bir eklenti gibi olan ve birkaç sembolden tik alma ve işleme yeteneğine sahip, sonuçları programlara (programın bölümleri veya Uzman Danışmanlar, belirli bir sembolle çalışan göstergeler) aktaran kendi"özel aracınızı" oluşturma olasılığını tanıtmak mantıklı olacaktır. EA'lar üzerinde bir üst yapı gibidir ve birkaç sembolden tik alma ve işleme yeteneğine sahiptir, sonuçları kendi iş parçacığında belirli bir sembolle çalışan programlara (programın bölümleri veya EA'lar, göstergeler) aktarır. Bu, "çoklu para biriminin" yaratılmasını büyük ölçüde kolaylaştırmış ve teşvik etmiştir. Ve nesne programlama kavramının kendisi buna iter. Birkaç sembolle çalışıyorsanız neden bir Uzman Danışmanı belirli bir sembole bağlayasınız?
Not: SymbolInf... fonksiyonlarına "bu sembol için yeni bir tik geldi" olayı gibi bir şey eklemek iyi olurdu.
Bu "eklenti" MQL5 standart araçları kullanılarak uygulanabilir: Multicurrency tick handler OnTickMarketWatch
Teşekkür ederim. Beni yukarıdaki sonuçlara iten bu makaleydi. Ancak bu makalede sizin de fark ettiğiniz gibi:
Kullanım için ipuçları:
1. Çoklu para birimi tik işleyicisinin bu çeşidi oldukça yoğun kaynak kullanır. Gecikme değişkenini kullanarak koddaki tik alma süresinin gecikmesini artırarak işlemci üzerindeki yükü hafifletebilirsiniz. Ancak aynı zamanda bazı tik sayılarını atlayabilirsiniz.
Gecikme süresini 1 saniyeye kadar artırırsanız, OnTimer() kullanarak aynı etkiyi elde edebilirsiniz. Ne yazık ki aynı dezavantajlarla birlikte.
Aynı zamanda, terminal sürekli olarak "Piyasa Penceresi "nden sembollere göre tikleri alır ve işler. Bu tiklere erişimimiz var, ancak bu verilerin güncellendiğine dair bir sinyalimiz yok. Bu yüzden kontrolü yapay olarak yapmak zorundayız. MQL5'in avantajı bunun yapılabilmesidir. Ancak terminal işlevlerine gömülü bir çözüme sahip olmanın çok daha zarif olacağı konusunda hemfikiriz. OnTrade() gibi ayrı bir olay olsun ve geliştirici bunu kendi takdirine bağlı olarak kullanabilsin (ya da kullanmasın).
Ve uzmanlar üzerinde "özel araçlar" veya üstyapı hakkında.... Bunun bir tür "hayal" olduğunun ve tasarım aşamasında düşünülmesi gerektiğinin farkındayım... Yazık!
Teşekkür ederim. Beni yukarıdaki sonuçlara iten bu makaleydi. Ancak sizin de bu makalede belirttiğiniz gibi:
Kullanım için ipuçları:
1. Çoklu para birimi tik işleyicisinin bu çeşidi oldukça yoğun kaynak kullanır. Gecikme değişkenini kullanarak koddaki tik alma süresinin gecikmesini artırarak işlemci üzerindeki yükü hafifletebilirsiniz. Ancak aynı zamanda belirli sayıda keneyi atlayabilirsiniz.
Gecikme süresini 1 saniyeye kadar artırırsanız, OnTimer() kullanarak aynı etkiyi elde edebilirsiniz. Ne yazık ki aynı dezavantajlara sahip.
Aynı zamanda, terminal sürekli olarak "Piyasa Penceresi "nden sembollere göre tikleri alır ve işler. Bu tiklere erişimimiz var, ancak bu verilerin güncellendiğine dair bir sinyalimiz yok. Bu yüzden kontrolü yapay olarak yapmak zorundayız. MQL5'in avantajı bunun yapılabilmesidir. Ancak terminal işlevlerine gömülü bir çözüme sahip olmanın çok daha zarif olacağı konusunda hemfikiriz. OnTrade() gibi ayrı bir olay olsun ve geliştirici bunu kendi takdirine göre kullanabilir (veya kullanmayabilir).
Ve uzmanlar üzerinde "özel araçlar" veya üstyapı hakkında.... Bunun sadece bir "hayal" olduğunun ve tasarım aşamasında düşünülmesi gerektiğinin farkındayım... Yazık!
Tamam! Tamam! Şimdi geriye geliştiricilerin bizi duyması kalıyor. Bu eklenti bir kerede iş parçacığı yönetimi işlevlerini içerebilirse iyi olur.
Her işlemi kendi iş parçacığında çalıştırmak mümkün olurdu. Belki de mevcut tik ile çalışırken yeni bir tikin işlenmesine izin verebilir.
Faydalı bir makale. Yeni ufuklar açtı.
Bir sorum var: OnTick () işlevi, OnTick (EURUSD) gibi parametreli bir işleve dönüştürülebilir mi, böylece farklı enstrümanlardan gelen keneler tek bir Uzman Danışman'da paralel olarak işlenebilir mi? Elbette, tek parametreli bir işlevin her bir örneğinin ayrı bir iş parçacığında (ayrı bir çekirdekte) işlenmesiyle.

- www.mql5.com

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale MetaTrader 5’te Paralel Hesaplamalar yayınlandı:
İnsanlık tarihi boyunca zaman büyük bir değer olmuştur ve bunu gereksiz şekilde israf etmemeye çalışıyoruz. Bu makale, bilgisayarınız çok çekirdekli bir işlemciye sahipse Uzman Danışmanınızın (EA) çalışmasını nasıl hızlandıracağınızı açıklayacaktır. Ayrıca, önerilen yöntemin uygulaması MQL5 dışında başka hiçbir dilin bilinmesini gerektirmez.
Tüm bilgisayar kullanıcıları (ve hatta tüm acemi programcılar) bunun nasıl çalıştığını anlamaz. Bu nedenle, biri kesinlikle şu soruyu soracaktır: Daha önce bile (tek çekirdekle) bilgisayar çok sayıda programı eş zamanlı çalıştırabilirken ve tümü çalışırken neden bu kadar çok çekirdekli işlemciye ihtiyacımız var? Güvenin, bu böyle değildir. Aşağıdaki diyagrama bakalım.
Şekil 1. Uygulamaların paralel yürütülmesi
Yazar: ds2