Masalah dengan pengekodan pembolehubah tempatan vs global pada mql4
Results 1 to 10 of 10

Thread: Masalah dengan pengekodan pembolehubah tempatan vs global pada mql4

  1. #1
    2 Lampiran Halo,
    Saya agak baru untuk mql4. Saya telah melakukan yang baik tetapi akhir-akhir ini saya telah benar-benar terjejas oleh masalah yang saya hadapi. Saya telah mengodkan ea mudah yang berfungsi dengan sebaik sahaja saya mengisytiharkan pembolehubah tempatan untuk buyorder
    int buyorder = OrderSend (Simbol (), OP_BUY, LotSize, Ask, 3,0,0, NULL, MagicNumber, 0, Hijau);

    jika (buyordergt; 0)
    OrderModify (buyorder, OrderOpenPrice (), bsl, btp, 0, CLR_NONE);

    tetapi saya harus mengakui buyorder sebagai pembolehubah global (dan mengambil int) ia tidak berfungsi. Ia hanya memodifikasi perintah infinitum. Untuk kehidupan saya, saya tidak dapat memahami mengapa ini harus berlaku sebagai pembolehubah global sepatutnya mempunyai keupayaan untuk digunakan di mana-mana dalam aplikasi dan nilai itu harus mempunyai keupayaan untuk berubah. Saya boleh melekat dengan pembolehubah tempatan tetapi saya ingin memperbesar ea untuk membuat banyak pesanan dan menggunakan berhenti pemantauan dan lain-lain dan saya perlu menggunakan pembolehubah global. Saya telah memasukkan ea di bawah. Fungsi versi pertama (pemboleh ubah tempatan), yang kedua (global) tidak. Sekiranya ada yang dapat menolong saya, itu akan sangat dihargai kerana saya telah menghabiskan masa untuk cuba menyelesaikannya. PS Ini juga terpakai kepada sellorder berubah-ubah.
    Terima kasih

    https://www.justgetforex.com/attachm...1727520325.mq4

    https://www.justgetforex.com/attachm...1081469781.mq4

  2. #2

    Quote Originally Posted by ;
    Hai, saya cukup baru untuk mql4. Saya telah melakukan perkara yang baik tetapi baru-baru ini saya telah benar-benar terperangkap oleh masalah yang saya jalankan. Untuk jangka hayat saya, saya tidak dapat memahami ini ...
    Mula dengan membuat lekukan yang betul kod. Pemformatan memang sangat miskin.
    Https://en.wikipedia.org/wiki/Indent_styleSelanjutnya menjahit semua jika kenyataanblok dalam pendakap kerinting {}. Kemudian anda akan melihat anda menggunakan faktor yang tidak ditentukantidak dikenali dalam salah satu aplikasi tersebut. Pengkompil tidak semestinya mengada-adakannya. Atau faktor itu tidak dikemas kini dalam edisi lain. Saya juga mencadangkan mendefinisikan semua pembolehubah tempatan pada puncak setiap fungsi dan menggunakan pendakap kerinting untuk melampirkan semua kiub. Itu mungkin akan memberikan komen melalui pengkompil bahawa ada sesuatu yang salah. TLDR: Pemisahan kod miskin; Sarang jika pernyataan tanpa pendakap kerinting; Perisytiharan ubah bentuk dalam talian Menipu pengompil ke dalam meluluskan kod buruk; Kod tidak berjalan sebagaimana yang dijangkakan.

  3. #3
    Apabila anda mengisytiharkan pemboleh ubah tempatan, ia hanya tersedia semasa 1 kes yang bermula {} dipanggil. Setiap kali mula {} berjalan ia menyatakan semula pembolehubah. Melihat pada kod anda bahawa pembolehubah buyer hanya dipanggil jika tidak ada pesanan BUY terbuka di tempat, dan pesanan baru dibuka. Sekiranya pesanan wujud, maka pembolehubah beli beli dilangkau daripada jika pernyataan itu tidak dapat diumumkan dan supaya perubahan pesanan tetap tidak digunakan. Iaitu apabila buyorder tidak dapat dipanggil, maka buyorder tetap tidak diisytiharkan, atau mempunyai sifar atau nilai, sebagai buyorder gt; 0 adalah palsu. Oleh itu, tiada perubahan pesanan. Sebaliknya, jika anda mengisytiharkan pembolehubah global maka buyorder akan mengekalkan nilai dan dengan itu kod yang ditulis akan cuba berubah setiap kali, sebagai buyorder gt; 0 adalah tepat. Semoga ini membantu Fred

  4. #4
    Terima kasih Fred, terima kasih Xaphod, Begitu mudah membuat kesilapan dengan pengekodan ini !! Pastinya akan cuba dan membuat pengekodan lebih mudah dibaca. Terima kasih lagi untuk input!

  5. #5

    Quote Originally Posted by ;
    Terima kasih Fred, Terima kasih, sangat mudah untuk membuat kesilapan dengan pengekodan ini !! Pastinya akan cuba membuat pengekodan lebih mudah dibaca. Terima kasih atas input!
    Anda hanya perlu memanggil OrderModify sekali selepas OrderSend. Maka tidak mengapa sama ada beliorder adalah global atau tempatan. Tempatan lebih disukai. Kod Insert int buyorder = 0if (PreviousFastlt; PreviousSlow CurrentFastgt; CurrentSlow) if (OpenOrdersThisPair (Symbol ()) == 0) buyorder = OrderSend (Symbol (), OP_BUY, LotSize, Ask, 3,0,0, NULL, 0, Hijau); jika (buyordergt; 0) OrderModify (buyorder, OrderOpenPrice (), bsl, btp, 0, CLR_NONE);

  6. #6

    Quote Originally Posted by ;
    Saya tidak tahu mengapa ini harus berlaku sebagai pemboleh ubah global sepatutnya mempunyai keupayaan untuk digunakan di mana-mana sahaja
    Itulah masalah yang tepat. Ia adalah isu pelbagaian. Dalam kedua-dua contoh, jika pernyataan (lt; buyordersellordergt; gt; 0) berada dalam skop yang salah; bersama-sama dengan perbezaan skop perubahan buyordersellorder bersama-sama dengan semua contoh, mendorong kesan buruk pada contoh seterusnya. Tonton kod sampel untuk mendapatkan pemeriksaan Xaphod yang betul. Jika saya boleh bertanya, bahasa apa yang digunakan untuk kod?

  7. #7

    Quote Originally Posted by ;
    petikan Itu masalah yang tepat. Ia masalah masalah. Dalam kedua-dua contoh, jika kenyataan (lt; buyordersellordergt; gt; 0) berada dalam tahap yang salah; dengan perbezaannya adalah jangkauan perubahan buyordersellorder dengan contoh-contoh, mendorong kesan buruk pada kes kedua. Tonton kod sampel Xaphod untuk pemeriksaan yang betul. Sekiranya saya boleh bertanya, bahasa apa yang biasa digunakan untuk kod?
    Halo rockit! Benar-benar saya tidak tahu bagaimana untuk memprogram, saya telah membaca banyak dan bergerak melalui buku mql4. Saya tidak pasti apa yang anda maksud dengan scoping walaupun saya faham dari ilustrasi di atas di mana saya salah. Terima kasih!

  8. #8

    Quote Originally Posted by ;
    quote Hi! Benar-benar saya tidak faham bagaimana untuk program, saya telah banyak membaca dan pergi melalui novel mql4. Saya tidak pasti apa yang anda maksud dengan scoping walaupun saya tahu dari contoh-contoh di atas di mana saya salah. Terima kasih!
    Maksud saya skopkonteks:
    https://en.wikipedia.org/wiki/Scope_(computer_science) Jika pernyataan yang memeriksa perintah pesananjual beli dimasukkan ke dalam konteks yang salah, kerana ia termasuk dari konteks (skop) yang lain (luar) jika-kenyataan.

  9. #9
    Halo kerana dapat melihat perbezaan antara pembolehubah global dan kejiranan ialah pembolehubah global boleh digunakan oleh lebih daripada EA sekaligus untuk mengangkut data antara EA dan Petunjuk, pembolehubah setempat diketahui hanya dari EA yang menyatakannya. Saya berharap anda dapat membantu ini

  10. #10

    Quote Originally Posted by ;
    Halo seperti yang dapat melihat perbezaan antara pemboleh ubah global dan kejiranan adalah bahawa pembolehubah global boleh digunakan oleh lebih dari EA sekaligus untuk memindahkan maklumat antara EA dan Petunjuk, pembolehubah tempatan diketahui hanya oleh EA yang menyatakannya. Saya harap anda dapati ini berguna
    Istilah ini malang dan mungkin membingungkan kepada sesetengah orang. Anda merujuk kepada Variabel Global terminal pelanggan. Siaran terdahulu bercakap kepada beberapa pemboleh ubah globalscope yang hanya boleh digunakan dalam EA dan lain-lain di mana ia diisytiharkan.

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.