Demo Pseudo-Indicator dengan Pengiraan Multi-Threaded untuk MetaTrader 5

Mike 2020.01.17 05:13 26 0 0
Lampiran

Selamat datang ke dunia pengiraan multi-threaded! Dalam artikel kali ini, kita akan membincangkan satu pseudo-indicator yang tidak menggunakan buffer. Tujuan utama alat ini adalah untuk menunjukkan teknik pengiraan yang menggunakan banyak thread. Alat ini mampu mengeluarkan arahan untuk pengiraan yang memakan masa dan melakukannya dalam thread berasingan yang dicipta untuk objek carta dengan System Trading yang berfungsi.

Contoh ini ditujukan kepada pengguna yang mempunyai latar belakang pemprograman.

Idea ini diambil daripada artikel mengenai Permintaan Web Asynchronous Multi-Threaded. Untuk maklumat lanjut mengenai cara mesej (acara) dihantar dan bagaimana sumber digunakan untuk memindahkan data antara carta, sila rujuk artikel tersebut.

Pseudo-indicator ini menggunakan pelaksanaan yang lebih "kompak" daripada teknik yang dinyatakan dalam artikel dengan menggunakan objek carta berbanding dengan tetingkap carta yang penuh. Anda boleh mendapatkan maklumat lanjut di forum.

Pastikan System Trading - MultiThreadedObjectWorker - telah disusun sebelum anda menyusun dan menjalankan pseudo-indicator itu sendiri - MultiThreadedIndicator.

Parameter Input

  • sinput int _Cores = 1; - bilangan thread yang ingin digunakan (jangan gunakan lebih daripada bilangan teras fizikal yang ada)
  • sinput int _Tasks = 1; - bilangan pseudo-tugas untuk dilaksanakan secara selari (gunakan nombor yang lebih besar daripada bilangan teras untuk melihat prestasi selari)
  • input string MultiThreadedScriptPath = "Experts\MultiThreadedObjectWorker.ex5"; - mesti menunjukkan laluan nama pekerja sistem trading

Setiap pseudo-tugas mengira beberapa fungsi sqrt (untuk tujuan demo sahaja). Ini boleh diubah dalam projek MQL anda kepada mana-mana algoritma yang memakan masa yang lain.

Untuk memulakan pengiraan selari selepas indicator disambungkan ke carta, sila klik pada carta tersebut. Semua fasa penting proses (baik dalam program MQL5 klien dan pekerja) akan dicatat.

Program MQL klien yang mengeluarkan permintaan pengiraan selari bukan hanya indikator tetapi juga System Trading. Skrip dan perkhidmatan tidak disokong oleh platform.

Dengan menggunakan fail kepala MultiThreadedObjectWorker.mqh, anda perlu melaksanakan pengurusan data anda sendiri antara MQL5-klien dan System Trading pekerja.

Berikut adalah 2 contoh log yang diperoleh.

Pelaksanaan 4 tugas pada 2 teras (2 thread secara selari)

Pelaksanaan 4 tugas pada 2 teras (2 thread secara selari)

Apabila menjalankan 4 tugas pada 2 teras, terdapat 2 thread selari, yang memberikan kelajuan pelaksanaan dua kali ganda berbanding 1 teras (bandingkan 3354ms di atas dan 6240ms di bawah).

Pelaksanaan 4 tugas pada 1 teras (single thread - program MQL standard)

Pelaksanaan 4 tugas pada 1 teras (single thread - program MQL standard)

Lebih banyak teras - lebih cepat.

Senarai
Komen 0