Çoklu kullanım hakkında daha fazla bilgi - sayfa 3

 
Renat :

Orijinal mesajınızı tekrar okumanızı, tüm sıfatlarınıza dikkat etmenizi ve ardından cevaplara inmenizi tavsiye ederim.

Cevaplar kulağa sakin geldi, yol boyunca "Bir şeyin hesaplarını paralelleştirmek için önce anlamak gerekir" diye yumuşak sorular soruldu, cevaplar verildi ve "aslında paralelleştirilmesi gereken ne" anlatıldı.

Ama çabucak öğrenmek yerine daha da saçmaladın ve bize köpekleri astın. Sonuç sert bir tepki oldu.

Tamam, sıfatlarla, katılıyorum, gerçekten biraz abarttım, bunun için özür dilerim. Kaba bir şey söylemedim, sadece aşırı duygusal eleştiri, ancak bu, buna tepki gösterdiğiniz sertliğe tamamen uygun değil. Geliştiricilerin vasat olduğunu ve hiçbir şey anlamadığını asla söylemedim, bu yüzden abartmayın.

Bu konuyu gündeme getirdiğim için, bunun neden gerekli olduğunun tamamen farkındayım ve paralelleştirilecek bir şey var demektir. Tüm algoritmalar "merhaba dünya!" ile sınırlı değildir, çok daha karmaşık ve kaynak yoğun algoritmalar vardır. Bu nedenle, algoritmayı görmemiş olmanıza rağmen, neyin paralelleştirilmesi gerektiği ve neyin olmadığı hakkında böyle bir ahlak dersi duymak çok garip.

DLL'deki kodun uygulanmasına ve OpenCL kullanımına gelince, bu artık MQL için geçerli değildir. Ve MQL'de programlama ile ilgiliydi.

OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 

OpenCL, MQL5 kodu içinde çalışır.

İşte bir kod örneği .

 
meat :

DLL'deki kodun uygulanmasına ve OpenCL kullanımına gelince, bu artık MQL için geçerli değildir. Ve MQL'de programlama ile ilgiliydi.

Yani çoklu kullanım için komut dosyaları var. Ve test cihazında gerekli değil
 
meat :

Ve bana ne cevap verdin? Ne kadar harika bir terminale ve test cihazına sahip olduğunuzdan bahsetmeye başladınız, birkaç iş parçacığında çalıştınız. Ve terminalin hakkında tek kelime etmedim. Tamamen farklı bir şey hakkındaydı: MQL kodunda çoklu kullanım hakkında. Algoritma birkaç parçaya bölünebildiğinde ve her biri paralel olarak yürütüldüğünde. Ve siz, özüne bile girmeden kaba olmaya başlarsınız. Tamam, gördüğüm kadarıyla, böyle bir yaklaşımla herhangi bir yapıcılıktan bahsetmeye gerek yok, dolayısıyla tartışmaya devam etmenin bir anlamı yok.

Mevcut durumda yapıcı çözümler var. Birkaç mql programı (uzmanlar ve/veya göstergeler) mesajları ve dolayısıyla görevleri ve görevlerin yürütülmesinin sonuçlarını değiştirebilir - tabii ki, uygun bir değişim protokolü oluşturur ve düzenlerseniz. Tüm uzmanlar farklı iş parçacıklarında (her biri kendi içinde) çalışır, bu nedenle, böyle bir ortak hesaplama şeması açıkça çok iş parçacıklıdır ve birkaç çekirdek varsa, bunları yeterince eşit şekilde yükleyecektir.

Mesajlaşma (mql5 aracılığıyla) şu yollarla mümkündür:

1. terminal olayları

2. adlandırılmış borular

3.DLL

4. dosyalar

5. vb.

Bu araç setinden en uygun olanı seçebilir veya birden fazla (en azından hepsini aynı anda) kullanabilirsiniz. Her yöntemin avantajları ve dezavantajları vardır; örneğin, adlandırılmış kanallar yerel bir ağ üzerinden bilgi aktarmanıza izin verir, bu nedenle bir görevi birden fazla çok çekirdekli işlemci için paralel hale getirmek mümkündür.

İyi şanlar.

 
Renat :

OpenCL, MQL5 kodu içinde çalışır.

İşte bir kod örneği .

İşe yarayan şey savaşın yarısıdır. Ve o zaman nasıl düzenlenir ve hata ayıklanır? Bir dize sabitindeyse, o zaman bir hata nasıl aranır? Bu, harici bir programda geliştirilmesi ve ardından MQL'ye eklenmesi gerektiği anlamına gelir. Ancak sürekli böyle bir transfere girerseniz, ilk yazıda yazdığım gibi çıldırabilirsiniz. Kodun geliştirilmesi hala başka bir yerde yürütüldüğüne göre, tüm bunları MQL'ye zorlamanın amacı ne? Derhal DLL olarak derlemek ve içe aktarmak daha kolaydır.

Tabii ki, kendi kendine yazılan DLL'ler ve diğer şeyler kullanılmadan bir açık kaynak kodu oluşturma hedefinin burada takip edildiğini anlıyorum. Ama bunlar özel durumlar. Genellikle program ortaklar yerine kendisi için yazılır. Ve birkaç kişi sürekli olarak bir programdan diğerine kod sürükleyerek anlamsız manipülasyon yapmak ister.

Şimdi, tüm bunlar için yerleşik bir derleyici yaptıysanız, o zaman başka bir konu. Ve bu arada, neden olmasın? Sishny sözdizimi gibi aynı yerde. Onlar. Tüm bunları normal bir mql kodunun parçası olarak kullanmak, yalnızca MetaEditor'unuza ek işlevler ekleyerek mümkün olacaktır. Ve sonra derleyici ilgili kod parçasını uygun biçimde biçimlendirir, \r\n, vb. ekler.

 
meat :

İşe yarayan şey savaşın yarısıdır. Ve o zaman nasıl düzenlenir ve hata ayıklanır? Bir dize sabitindeyse, o zaman bir hata nasıl aranır? Bu, harici bir programda geliştirilmesi ve ardından MQL'ye eklenmesi gerektiği anlamına gelir. Ancak sürekli böyle bir transfere girerseniz, ilk yazıda yazdığım gibi çıldırabilirsiniz. Kodun geliştirilmesi hala başka bir yerde yürütüldüğüne göre, tüm bunları MQL'ye zorlamanın amacı ne? Derhal DLL olarak derlemek ve içe aktarmak daha kolaydır.

Tabii ki, kendi kendine yazılan DLL'ler ve diğer şeyler kullanılmadan bir açık kaynak kodu oluşturma hedefinin burada takip edildiğini anlıyorum. Ama bunlar özel durumlar. Genellikle program ortaklar yerine kendisi için yazılır. Ve birkaç kişi sürekli olarak bir programdan diğerine kod sürükleyerek anlamsız manipülasyon yapmak ister.

Şimdi, tüm bunlar için yerleşik bir derleyici yaptıysanız, o zaman başka bir konu. Ve bu arada, neden olmasın? Sishny sözdizimi gibi aynı yerde. Onlar. Tüm bunları normal bir mql kodunun parçası olarak kullanmak, yalnızca MetaEditor'unuza ek işlevler ekleyerek mümkün olacaktır. Ve sonra derleyici ilgili kod parçasını uygun biçimde biçimlendirir, \r\n, vb. ekler.

Kim ister, fırsatlar arar. Kim neden istemez ki © Atasözü

 
MetaDriver :

Mevcut durumda yapıcı çözümler var. Birkaç mql programı (uzmanlar ve/veya göstergeler) mesajları ve dolayısıyla görevleri ve görevlerin yürütülmesinin sonuçlarını değiştirebilir - tabii ki, uygun bir değişim protokolü oluşturur ve düzenlerseniz. Tüm uzmanlar farklı iş parçacıklarında (her biri kendi içinde) çalışır, bu nedenle, böyle bir ortak hesaplama şeması açıkça çok iş parçacıklıdır ve birkaç çekirdek varsa, bunları yeterince eşit şekilde yükleyecektir.

Mesajlaşma ( mql5 aracılığıyla) şu yollarla mümkündür:

1. terminal olayları

2. adlandırılmış borular

3.DLL

4. dosyalar

5. vb.

Bu araç setinden en uygun olanı seçebilir veya birden fazla (en azından hepsini aynı anda) kullanabilirsiniz. Her yöntemin avantajları ve dezavantajları vardır; örneğin, adlandırılmış kanallar yerel bir ağ üzerinden bilgi aktarmanıza izin verir, bu nedenle bir görevi birden fazla çok çekirdekli işlemci için paralel hale getirmek mümkündür.

İyi şanlar.

Pekala, şöyle söyleyelim, listelediğiniz şeylerin hiçbiri mql5 araçlarıyla ilgili değil :) Ve bu sorunun nasıl çözüleceği (bypass) ile ilgili değildi. Her zaman bir çıkış yolu bulabilirsin, buna hiç şüphe yok. Ve konuşma, saptırmak zorunda kalmamak için neden mql5'e uygun işlevselliği eklemediğinizle ilgili.

Katılıyorum, sadece birkaç iş parçacığında işlemeyi organize etmek adına ilgili çizelgelerle birçok Uzman Danışman başlatmak mantıklı değil ve güvenilmez.

 
Göstergelerde veya Uzman Danışmanlarda çoklu kullanım, yok denecek kadar az sayıda insan için gereklidir. Ve genellikle bu insanlar bu çok iş parçacığını kendi başlarına, dll'ler vb. aracılığıyla uygulayabilirler.
 
Reshetov :

Kim ister, fırsatlar arar. Kim neden istemez ki © Atasözü

Önce bunun faydasını anlamalısınız :) Yani genel olarak MQL5 ve buna bağlı olarak MT5 kullanmanın çıkarı bu platforma geçmeye değer mi? Sonuçta, burada ve MT4'te normal çalışma için şamanizmle meşgul olmanız, birkaç Uzman Danışman başlatmanız vb. sabun için. Kodun bir DLL dosyasına yazılması gerekiyorsa, açık bir API'ye sahip bir platformu hemen kullanmak, bir Uzman Danışman (ve genel olarak çalışan bir terminal) şeklinde fazladan bir eklentiye sahip olmaktan daha kolay ve daha güvenilirdir.

 
meat :

Önce bunun faydasını anlamalısınız :) Yani genel olarak MQL5 ve buna bağlı olarak MT5 kullanmanın çıkarı bu platforma geçmeye değer mi? Sonuçta, burada ve MT4'te normal çalışma için şamanizmle meşgul olmanız, birkaç Uzman Danışman başlatmanız vb. sabun için. Kodun bir DLL dosyasına yazılması gerekiyorsa, açık bir API'ye sahip bir platformu hemen kullanmak, bir Uzman Danışman (ve genel olarak çalışan bir terminal) şeklinde fazladan bir eklentiye sahip olmaktan daha kolay ve daha güvenilirdir.

Kimse sizi MQL5'e geçmeye zorlamaz. Örneğin, MQL4'te işlevsellikten yoksundum, bu yüzden beşe geçmek zorunda kaldım.

Ancak prensipte, örneğin, C++'daki tüm işlevleri yerine getirmek ve MQL5'te yalnızca yürütme bölümünü bırakmak ve tüm bu ekonomiyi adlandırılmış kanallar aracılığıyla bir protokolle bağlamak mümkündür. Deniz seçenekleri. Bir arzu olurdu.

Связь с MetaTrader 5 через именованные каналы без применения DLL
Связь с MetaTrader 5 через именованные каналы без применения DLL
  • 2012.10.15
  • MetaQuotes Software Corp.
  • www.mql5.com
Перед многими разработчиками встает одинаковая проблема - как пробиться в песочницу торгового терминала без применения небезопасных DLL. Одним из простых и безопасных методов является использование стандартных именованных каналов (Named Pipes), которые работают как обычные файловые операции. Они позволяют организовать межпроцессорное клиент-серверное взаимодействие между программами. Посмотрите практические примеры на C++ и MQL5 в виде сервера, клиента, обмен данными между ними и замер производительности.