Bagaimana untuk membuka hanya 1 pesanan apabila 2 graf memberikan isyarat yang sama
Results 1 to 4 of 4

Thread: Bagaimana untuk membuka hanya 1 pesanan apabila 2 graf memberikan isyarat yang sama

  1. #1
    1 Lampiran Hello Saya menjalankan EA yang sama pada berbilang grafik, ia melaksanakan dan memesan apabila syarat dipenuhi pada pembukaan lilin baharu. Tetapi kadangkala lebih daripada satu pasangan memberikan isyarat pada masa yang sama menghasilkan dua pesanan terbuka pada masa yang sama, seperti yang ditunjukkan dalam gambar.
    Adakah terdapat cara untuk membetulkan perkara ini dan menghalang salah satu arahan daripada berlaku?



  2. #2

    Quote Originally Posted by ;
    Hello Saya menjalankan EA yang sama pada berbilang grafik, ia melaksanakan dan memerintahkan apabila syarat dipenuhi pada pembukaan lilin baharu. Tetapi kadangkala lebih daripada satu pasangan memberikan isyarat pada masa yang sama menghasilkan dua pesanan terbuka pada masa yang sama, seperti yang ditunjukkan dalam gambar. Adakah terdapat cara untuk membetulkan perkara ini dan menghalang salah satu arahan daripada berlaku? {gambar}
    Kedua-dua EA dijalankan dalam urutan yang berbeza dan dilaksanakan secara tidak segerak. Jika mereka membuka kedudukan pada masa yang sama, anda perlu memaksanya ke dalam pelaksanaan segerak dengan menggunakan mutex.Buat mutex. Apabila isyarat terbuka dipenuhi, biarkan setiap EA memperoleh mutex. Setelah mutex diperoleh, semak sama ada pesanan terbuka sudah wujud. Jika ya, jangan buka yang lain. Memandangkan hanya satu EA boleh memperoleh mutex pada bila-bila masa, EA yang cuba mendapatkannya perlu menunggu EA yang memilikinya. Dengan cara ini EA tidak berfungsi secara selari lagi, prasyarat untuk mencapai apa yang anda inginkan. Pelaksanaan yang berfungsi ialah
    https://github.com/rosasurfer/mt4-mq...fLib1.mq4#L315(ia melakukan lebih banyak perkara daripada yang anda perlukan), kes penggunaan sebenar
    https://github.com/rosasurfer/mt4-mq...ller.mq4#L1030, baris 1049-1051 tidak pernah dilaksanakan oleh lebih daripada satu EA (segerak dan bukannya tingkah laku tak segerak).
    https://www.mql5.com/en/docs/globals...setonconditionadalah rakan anda dan titik permulaan untuk penyiasatan.

  3. #3

    Quote Originally Posted by ;
    {quote} Kedua-dua EA dijalankan dalam urutan yang berbeza dan dilaksanakan secara tidak segerak. Jika mereka membuka kedudukan pada masa yang sama, anda perlu memaksa mereka ke dalam pelaksanaan segerak dengan menggunakan mutex. Buat mutex. Apabila isyarat terbuka dipenuhi, biarkan setiap EA memperoleh mutex. Setelah mutex diperoleh, semak sama ada pesanan terbuka sudah wujud. Jika ya, jangan buka yang lain. Memandangkan hanya satu EA boleh memperoleh mutex pada bila-bila masa, EA yang cuba mendapatkannya perlu menunggu EA yang memilikinya. Dengan cara ini EA tidak berfungsi secara selari lagi, prasyarat...
    Baiklah terima kasih. Jadi mutex daripada penyelidikan saya ialah fail mqh luaran, bukan?

  4. #4

    Quote Originally Posted by ;
    {quote} Ok terima kasih. Jadi mutex daripada penyelidikan saya ialah fail mqh luaran, bukan?
    Ia mungkin mana-mana sumber yang boleh diakses oleh bahasa pengaturcaraan dengan cara yang ditentukan untuk mengurus capaian. Dalam istilah yang sangat mudah ia adalah bilangan pengiraan balas bagi capaian sumber. Sumber sedemikian juga boleh dipanggil semaphore, dan mutex ialah semaphore khas: satu dengan akses eksklusif bersama. Ini bermakna ia adalah kaunter dengan bilangan maksimum capaian serentak sebanyak 1. Jika satu blok kod memperoleh sumber, tiada blok kod lain boleh (saling eksklusif). Semua yang lain perlu menunggu sehingga kod yang memiliki sumber itu mengeluarkannya. Panggil ia kunci jika anda mahu. Dalam MQL anda boleh menggunakan pemegang tetingkap, pemegang fail, pembolehubah khas, atau dalam kes rangka kerja saya, ia hanyalah rentetan MQL biasa yang disimpan dalam carta. GlobalVariableSetOnCondition() membolehkan anda mencipta mekanisme penguncian menggunakan pembolehubah global sebagai sumber yang anda boleh mengurus aksesnya. Cari GlobalVariableSetOnCondition dan kunci di forum MQL5, terdapat beberapa lagi contoh pelaksanaan. GlobalVariableSetOnCondition() adalah sebahagian daripada MQL terutamanya untuk tujuan itu, bukan untuk yang lain. Daripada dokumentasi MQL4 lama: Fungsi ini menyediakan akses atom kepada pembolehubah global, jadi ia boleh digunakan untuk menyediakan semafor untuk interaksi beberapa pakar yang bekerja secara serentak dalam satu terminal pelanggan.

Kebenaran Posting

  • Anda tidak boleh menghantar thread baru
  • Anda tidak boleh membalas kiriman
  • Anda tidak boleh mengedit siaran anda
  • Anda tidak boleh menyiarkan lampiran
  •  
  • Kod BB Hidup
  • Smilies Hidup
  • Kod [IMG] adalah Hidup
  • Kod [VIDEO] adalah Hidup
  • Kod HTML Tidak Hidup
Polisi Kuki
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.